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

时间:2016-04-06 16:59:15

标签: javascript php jquery ajax

输入更改时出现问题,当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;
    }
});

}); 哪里可以成为不警告价值的问题?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您是否已将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

答案 2 :(得分:0)

这样的东西?

<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);