javascript - Hur man använder jQuery för att sätta värdet på ett inmatningselement genererat av ASP.NET MVC?


Jag har en inmatningstext som är denna:

<div class="editor-label">
    @Html.LabelFor(model => model.EmployeeId, "Employee Number")
</div>

<div class="editor-field textBoxEmployeeNumber">
    @Html.EditorFor(model => model.EmployeeId) 
    @Html.ValidationMessageFor(model => model.EmployeeId)
</div>

Vilket genererar följande HTML

<div class="editor-label">
  <label for="EmployeeId">Employee Number</label>
</div>

<div class="editor-field textBoxEmployeeNumber">
  <input class="text-box single-line" data-val="true" data-val-number="The field EmployeeId must be a number." data-val-required="The EmployeeId field is required." id="EmployeeId" name="EmployeeId" type="text" value="" />

  <span class="field-validation-valid" data-valmsg-for="EmployeeId" data-valmsg-replace="true"></span>
</div>

Jag vill sätta värdet på denna inmatningstext med jQuery så jag gjorde så här:

<script type="text/javascript" language="javascript">
    $(function() {
        $('.textBoxEmployeeNumber').val("fgg");
    });
</script> 

men det fungerar inte... vad är felet i min syntax?

Svar #1

Din väljare hämtar textlådans omgivande <div class='textBoxEmployeeNumber'> istället för inputen inuti den.

// Access the input inside the div with this selector:
$(function () {
  $('.textBoxEmployeeNumber input').val("fgg");
});

Uppdatera efter att ha sett HTML-utdata

Om ASP.NET-koden tillförlitligt genererar HTML <input> med ett id-attribut id='EmployeeId', kan du enklare bara använda:

$(function () {
  $('#EmployeeId').val("fgg");
});

Om detta misslyckas, behöver du kontrollera i din webbläsares felkonsol att du inte har andra skriptfel som orsakar att detta misslyckas. Det första exemplet ovan fungerar korrekt i denna demonstration.

Svar #2

Med jQuery kan vi använda följande kod:

Välj efter inmatningsnamn:

$('input[name="textboxname"]').val('some value')

Välj efter inmatningsklass:

$('input[type=text].textboxclass').val('some value')

Välj efter inmatnings-ID:

$('#textboxid').val('some value')

Svar #3

$(document).ready(function () {
    $('#EmployeeId').val("fgg");

    //Or
    $('.textBoxEmployeeNumber > input').val("fgg");

    //Or
    $('.textBoxEmployeeNumber').find('input').val("fgg");
});

Relaterade artiklar