获取动态创建的输入的值


Getting the value of a dynamically created input

我有下面的jquery脚本,它将表单加载到div"blankform"中

jQuery('#metentry').submit(function(e){
    e.preventDefault(); 
    // getting data from form to variables
    var date = jQuery('#stddate').val();
    var kgsunit = jQuery('#unit').val();
    var kgsshift = jQuery('#shift').val();
    //sending data to script
    jQuery.post("get_blank_form.php", {
        "date": jQuery('#stddate').val(), 
        'unit': kgsunit,
        'shift': kgsshift, 
    }, function(data) {      
        //loading a form to the div blankform
        jQuery('#blankform').html(data);
    });

get_blank_form.php包含以下代码

<?php
    echo'<form id="shiftentry" name="shiftentry" >';
    echo "Date:<input id=shiftdate value='".$date."'/>"; 
    echo "Unit:<input id=shiftdate value='".$unit."'/>";
    echo "Shift:<input id=shiftdate value='".$shift."'/><br/>";
    echo "<table><tr><th>No</th><th>Ele</th><th>Location</th><th>Dose Rate (mGy/h)</th><th> Tritium (DAC)</th>  <th>Part (DAC)</th> <th>Iodine (DAC)</th><th>   Surface Cont. (Bq/cm2) </th></tr>";
    while($row2 = mysql_fetch_array($result_sec))
    { 
        echo "<tr>";
        echo "<td>".++$rc."</td>";
        echo "<td><input size='5' id='".$row2['elevation']."' value='".$row2['elevation']."' /></td>";
        echo "<td><input id='".$row2['loc_id']."' value='".$row2['location']."' /></td>";
        echo "<td><input size='5' id='dose".$rc."'  value='".$row2['radn_level']."'/></td>";
        echo "<td><input size='5' id='h3".$rc."' value='0' /></td>";
        echo "<td><input size='5' id='part".$rc."' value='0' /></td>";
        echo "<td><input size='5' id='iod".$rc."' value='0' /></td>";
        echo "<td><input size='5' id='cont".$rc."' value='0' /></td>";
        echo "</tr>";
    }
    echo " </table>";
    echo '<div align="center">';
    echo '<input type="submit" id="submit" name="submit" value="Submit" width="30" />';
    echo '</div>';
?>

这将创建一个具有类似id1id2。。。id25dose1dose2。。。dose25等。

我想读取这些输入框的值。像var loc1 = $("#id1").val();这样的普通方法不起作用,因为这些元素是动态创建的。

甚至点击提交按钮也不会被触发。

下面的脚本不会产生任何输出。

jQuery('#shiftentry').submit(function(e) {
    e.preventDefault(); 
    alert("Submitted");

有什么建议吗?

由于Form DOM是在Ajax调用后动态创建的,因此可以使用.on?

类似:

$(document).on('submit' , '#shiftentry' , function(e) {
 e.preventDefault(); 
 alert("Submitted");
});

您将需要使用on()方法进行事件处理,因为表单是使用ajax调用创建的,稍后还会添加。

正如稍后添加的那样,它将不会绑定到您指定的submit事件处理程序。要将它与处理程序绑定,您需要使用jQuery中的on()

$(document).on('submit', '#shiftentry', function() {
    //Your code
});

对于提交按钮,您可以使用触发它

$('#submit_id').on('click', function(){
    $('#shiftentry').send(function(e) {
        e.preventDefault(); 
        alert("Submitted");
    );
})

至于使用获取值。

$('#id1').val()

这应该可以正常工作,但请记住,id字段中不允许使用某些字符,如[,]。等等。如果你不能在你的id字段中避免这个特殊字符,你可以使用。

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

以获取字段的值。