jQuery AJAX调用禁用输入框

时间:2014-03-05 22:32:15

标签: jquery html ajax

所以我有一个网页,它执行Ajax调用以从服务器获取数据。但是,当我触发Ajax调用时,我的网页上的输入框(本例中为#serial)停止响应(我无法在其上键入任何内容)。有谁知道是什么原因引起的?

<div id="filterconfig">
    <b>Serial Number:</b> <br/><input type="text" id="serial"/> <br/>
<button type="button" onclick="clicked($('#serial').val(), $('[name=location]:checked').val(), $('#exception'), $('[name=direction]:checked').val(),$('[name=server]:checked').val())">Filter</button>
</div>

这是被调用的函数:

$(document).ready(assignOnclick);

    function assignOnclick() {
        $("tbody > tr").click(function () {
            $(this).onclick = GetSelectedReadableForm(this);
        });
    }

function callAjax() {
        var urlHuman = encodeURI(someUrl);
        var urlHex = encodeURI(someUrl);

        $.ajax({
            url: urlHuman,
            async:false,
            cache: false,
            success: function (data) {
                $('#stringview').find('.human').val(data);
            }
        });

        $.ajax({
            url: urlHex,
            async:false,
            cache: false,
            success: function (data) {
                $('#stringview').find('.hex').val(data);
            }
        });

    }

    function GetSelectedReadableForm(obj) {
        $("tr").css({ 'background-color': '' });
        $(obj).closest('tr').css({ 'background-color': '#ccc' });
        row_id = parseInt($(obj).closest('tr').find('#rowID').attr("value"));
        callAjax();
    }

2 个答案:

答案 0 :(得分:1)

在jquery doc中:

  

async(默认值:true)类型:Boolean默认情况下,发送所有请求   异步(即默认设置为true)。如果你需要   同步请求,将此选项设置为false。跨域请求   和dataType:“jsonp”请求不支持同步操作。   请注意,同步请求可能会暂时锁定浏览器,   在请求处于活动状态时禁用任何操作。

你真的需要同步请求吗?!

您可以尝试将结果与同步请求同步:

    $.when(
      $.ajax({ url: urlHuman, cache: false}),
      $.ajax({ url: urlHex, cache: false})
    ).done( function(data1, data2) {
      $('#stringview').find('.human').val(data1);
      $('#stringview').find('.hex').val(data2);
    });

答案 1 :(得分:0)

问题是我将整个函数分配给“onkeydown”事件,并且它阻止了不适合它的按键上的默认行为