由 AJAX 设置的 HTML 输入字段值并捕获该事件

Posted

技术标签:

【中文标题】由 AJAX 设置的 HTML 输入字段值并捕获该事件【英文标题】:HTML Input field value set by AJAX and catch that event 【发布时间】:2015-11-30 09:35:46 【问题描述】:

我的 html 中有字段,一些第三方服务会设置它的值。

如何在字段值发生变化时捕捉到该事件?

<input data-val="true" data-val-length="City cannot be longer than 30 characters." data-val-length-max="30" data-val-required="City is required." id="Address_City" maxlength="30" name="Address.City" type="text" value="">

我怎样才能捕捉到这个字段的值变化, 我也试过 .change 事件,

    $('#Address_City').on('change', function() 
      console.log("Changed");
);

【问题讨论】:

您是否提到任何其他用户为第三方?或者您会通过向第三方 API 发送 AJAX 请求来更改您的输入吗?或者你有一个关于那个 API 的通知通道并且那个通道会改变它?请指定它:) 无论您的代码多么明显,最好还是将代码与您的问题一起发布。我们根本无法读心。 好的。我认为这个问题可能不需要代码,我只有一些输入字段,它们的值由 Post Code Anywhere API 设置,是的,它基于 AJAX,但我们不允许修改 AJAX 请求或响应。它只是设置这些字段的值。我将用代码更新问题。谢谢。 @Jai 你是什么意思..? 【参考方案1】:

使用change 事件。

$("#myTextBox").on("change", function() 
   //alert($(this).val()); 
);

【讨论】:

【参考方案2】:
<select name="user_id" id="user_id" class="form-control" onchange=get_contact(this.value)> 
<option value="1">1</option> 
<option value="2">2</option> 
 <option value="3">3</option> 
</select>
 <input type="text" class="form-control"  name = "contact_mob" id="contact_mob" placeholder="Contact Number" value="" />
 function get_contact(user_id) 
 $.ajax(
     type: "POST",
     url: "search.php",
     data: 
         "user_id": user_id
     ,
     dataType:'json',
     success: function(data) 
      // console.log(data.user_mobile); 
         $("#contact_mob").val(data.user_mobile);
         // $("#replaceThis").append(responseData);
     
 );

【讨论】:

不,我们不能修改由 3rd 方插件处理的 AJAX 帖子。【参考方案3】:

请指定您在代码中使用的控件。 您可以使用 change 或 keydown 事件。

对于客户端控制

    $("#TextBOXID").bind("keydown", function() 
                      if($("#TextBOXID")[0].value!="" && $("#TextBOXID")[0].value.length>0)
         
        );

用于服务器控制

   $("#<%=TextBOXID.ClientID%>").bind("keydown", function() 
           if($("#TextBOXID")[0].value!="" && $("#TextBOXID")[0].value.length>0)
           
        );

【讨论】:

该值由Ajax调用设置。【参考方案4】:

我们将检索一个值并在 HTML 表单中设置该值。首先,让我们创建表单。

表格

<form method="POST" action="">
    <select name="user_id" id="user_id" class="form-control">
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
    </select>
    <input type="text" class="form-control"  name = "contact_mob" id="contact_mob" placeholder="Contact Number" value="" />
</form>

现在我们有了一个表单,我们将使用 javascript 和 jQuery 来完成技术部分

Javascript/jQuery

// Wait for the dom to load before we start doing stuff
$(document).ready(function ($) 
    // append value to input on change of the dropdown
    $(document).on('change', '#user_id' , function () 
        // Get selected value
        var user_id = $(this).val();
        $.ajax(
             type: "POST", // Set ajax call type
             url: "search.php", // Set url
             data: "user_id": user_id, // Set an array of data
             dataType:'json', // Set the data type
             success: function(data) 
                // Log response to console
                console.log(data);
                // Append data to input
                $("#contact_mob").val(data.user_mobile);
            
        );
    );
);

就是这样

【讨论】:

无法修改ajax调用,由插件处理。【参考方案5】:

我想我找到了一些解决方案,我将在这里使用计时器,会有一些持久性问题..但我找不到任何东西

$('#Address_Address').on('change keyup paste click', function () 
    $('.pcaautocomplete .pcaselected').click(function () 
        var refreshInterval = setInterval(function () 
            if ($('#State').val() != "") 
                var statusVal = $('#State').val();
                clearInterval(refreshInterval);
            
        , 100);
    );
);

【讨论】:

以上是关于由 AJAX 设置的 HTML 输入字段值并捕获该事件的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获表单值并通过电子邮件作为 ajax 请求发送?导轨

修改 Redux 表单值并触发 Onchange

PrimeFaces ajax 更改输入和对另一个字段的操作

如何获取新值并取消文本输入字段中的事件?

将数据数组从表单传递到 ajax 到 PHP 发布文件

如何通过 jQuery+Codeigniter 获取值并显示在输入字段中?