在jquery中设置item的值

时间:2014-04-19 09:23:47

标签: javascript jquery

我有一个代码,一旦点击一个按钮就会从文本框中获取值,通过外部数据库运行它,然后将结果返回给我。然后将该结果放入另一个文本框中。

我的问题是我的编码花了太长时间(至少我认为这是问题)从外部数据库获取结果,并在文本框未准备好时设置它的值。

    <script type="text/javascript">
    // Declaring the variable.
    var mname = "";

    $('#btnMN').click(function() {
        //Pull data from name
        var name = $(this).closest('tr').find(':input[type="text"][name="name[]"]').val();
        //Run through database
        $.post('test1.php', { name: name}, function(data){
            mname = data;
        });
        //Set text box with return data
        $(this).closest('tr').find('.master').val(mname);
        mname = "";

    });

    </script>

我不能把“设置带有返回数据的文本框”部分放在另一个函数中,因为我将丢失“this”选择器,告诉它确切地设置哪个文本框,因为我有一个动态表单,我可以添加/将行删除到。

    <tr id="input_11" style="margin-bottom:4px;" class="clonedInput">
        <td valign="top" align="right" style="padding-right: 10px;"><span style="color:#00CD00;"><BR>Victim:</span></td>
        <td valign="top">Name:<input type="text" name="name[]" size="35"/><input type="button" id="btnMN" value="Mastername Check" /></td>
        <td class="master">Mastername:<textarea readonly class="master" name="master[]" rows="8" cols="28"></textarea></td>
        <td>Statement:<textarea name="statement[]" rows="8" cols="28"  placeholder="Paste statement here."></textarea></td>
      </tr>

2 个答案:

答案 0 :(得分:6)

$.post()是一个异步(即“ajax”中的“a”)调用。因此它发送请求但在等待响应时继续处理函数的其余部分。任何基于该响应的东西都必须在callaback中。

    $('#btnMN').click(function() {
        //Pull data from name
        var name = $(this).closest('tr').find(':input[type="text"][name="name[]"]').val();
        //Store element we want to update
        var master =  $(this).closest('tr').find('.master');
        //Run through database
        $.post('test1.php', { name: name}, function(data){
            master.val(data);
        });


    });

答案 1 :(得分:1)

在回调函数中设置值

 $.post('test1.php', { name: name}, function(data){
       $(this).closest('tr').find('.master').val(data);
  });