jQuery在ajax发送请求时输入更改


jQuery input on change when ajax send request

在更改时输入有问题,当ajax向php文件发送请求时,它在输入中实现信息。

HTML:

    <div class="col-xs-8">
    <div class="form-group" id="kalb1">
        <input type='text' id="galutinis2" name='mer[]' value="-" disabled>
        <input type='text' name='ker[]' value="-" disabled>
        <input type='text' name='ser[]' value="-" disabled>
        <input type='text' name='per[]' value="-" disabled>
    </div>

jQuery:

$(document).on('input', '#galutinis2', function() {
    var galutinis = $(this).attr('id');
    alert(galutinis);
});

PHP实现输入:

 if(isset($_POST['per']))) {
     $produktas = $_POST['per'];
     $infos = CalSkaiciuokle::where("id", $produktas);
      foreach ($infos as $info) {
         echo "<input type='text' id='galutinis2' name='mer[]' value=" .$info->name. " disabled>";
         echo "<input type='text' name='ker[]' value=".$info->surname." disabled>";
         echo "<input type='text' name='ser[]' value=".$info->city." disabled>";
         echo "<input type='text' name='per[]' value=".$info->address." disabled>";
     }
     exit;
}

AJAX:

$(document).on('change', '.subcategory', function() {
var subcategory_id = $(this).attr('id');
//alert($("#"+subcategory_id).val());
$.ajax({
    type: 'post',
    url: 'ajaxLoader.php',
    data: {
        per:$("#"+subcategory_id).val()
    },
    success: function (response) {
        document.getElementById("kalb"+parseInt(subcategory_id.match(/[0-9]+/)[0], 10)).innerHTML=response;
    }
});

});不提醒值的问题在哪里?

我猜您正在替换原始表单,并且没有调用与"输入值更改"相关的事件(blurchange等)。您可以在AJAX回调中自己触发它们。

success: function(){
    document.getElementById("kalb"+par ...
    $('#galutinis2').trigger('input'); // or better use builtin events
}

您是否将jQuery代码封装在document.ready中?示例:

$(document).ready(function(){
    $(document).on('blur', '#galutinis2', function() {
        var galutinis = $(this).attr('id');
        alert(galutinis);
    });
}); //END document.ready

另外,请注意,必须保留blur()事件的输入字段才能激发。

如果您希望捕捉单个击键活动,请尝试.keyup()

$(document).ready(function(){
    $(document).on('keyup', '#galutinis2', function() {
        var galutinis = $(this).attr('id');
        alert(galutinis);
    });
}); //END document.ready

类似的东西?

<script>
    var subcategory_id;
    $(document).ready(function(){
        $(document).on('change', '.subcategory', function() {
            subcategory_id = this.id;
            //alert($("#"+subcategory_id).val()); <-- does this work??
            $.ajax({
                type: 'post',
                url: 'ajaxLoader.php',
                data: {
                    per:$("#"+subcategory_id).val()
                },
                success: function (response) {
                    var num = parseInt(subcategory_id.match(/[0-9]+/)[0], 10);
                    alert('Num: '+num);
                    $('#kalb'+num).val(response);
                }
            });
        });
    }); //END document.ready
</script>

请注意,var subcategory_id在AJAX success函数中不可用,因此必须全局声明(在使用它的函数之外)


此外,您可能希望通过回显POST数据来测试ajaxLoader.php文件中接收到的内容:

<?php
    die( $_POST['per'] );

并修改success函数:

success: function (response) {
alert(response);