jquery对话框记住以前的输入

时间:2015-02-27 05:32:09

标签: javascript jquery html

请帮帮我。 我有一个表单,其中包含多个文本输入,这些输入具有不同的ID,但下面的类相同

<input id="user_1" type="text" class="user-list" />
<input id="user_2" type="text" class="user-list" />
<input id="user_3" type="text" class="user-list" />

现在使用类定义我正在调用jquery对话框,如下所示

$('.user-list').click(function(){
    $( "#user-form" ).dialog( "open" );
    tableOpen(this);    
});

此处,user-form是一个名称列表,如下所示

<div id="user-form" title="Select Employee" >
<table id="user-table">
<thead><th>Employee No</th><th>Name</th></thead>
<tbody>
<tr><td>Employee-1 No</td><td>Employee-1 Name</td></tr>
<tr><td>Employee-1 No</td><td>Employee-1 Name</td></tr>
<tr><td>Employee-1 No</td><td>Employee-1 Name</td></tr>
</tbody>
</table>
</div>

现在我使用对话框在对话框中打开div元素

$( "#user-form" ).dialog({
create: function() {       },  
autoOpen: false,
cache: false,
closeOnEscape: true,
height: 400,
width: 600,
modal: true,
buttons: {
    Cancel: function() { $( this ).dialog( "close" );}
},
close: function() {}
});

对话框按预期显示。现在我将一个click事件添加到tableOpen函数中的用户表行,以便选择用户。

function tableOpen(selInput)
{
    alert($(selInput).id().text()+"first");
    $('#user-table tr').click( function() {
           alert($(selInput).id().text()+"second");
    });
    //some other function here from displaying the selected user to input field
}

问题开始了。第一次通过单击选择用户时,tableOpen函数中的警报只执行一次。但是在随后点击时,第一个警报仅显示一次,但第二个警报也会记住以前的点击次数,并且会显示我之前点击的所有警报。

3 个答案:

答案 0 :(得分:0)

function tableOpen(selInput)
{
    alert($(selInput).id().text()+"first");
    $('#user-table tr').unbind('click');
    $('#user-table tr').click( function() {
           alert($(selInput).id().text()+"second");
    });
    //some other function here from displaying the selected user to input field
}

答案 1 :(得分:0)

这是因为click事件的多重绑定。 你可以在这做两件事。

  1. 将点击装订移出绑定区域放置的块
  2. 使用关闭事件
  3. $('#user-table tr').off('click').on('click', function() {
        alert($(selInput).id().text()+"second");
    });
    

答案 2 :(得分:0)

我不确定你究竟想说什么,但我尝试了,我收到#user-table的三个提醒(等于second中的行数)。

$('#user-table tr').click( function() {
           alert($(selInput).id().text()+"second");
    });

您必须使用特定的选择器来调用行上的click事件。

例如为#user-table中的每一行提供唯一ID,并将其用于调用.click()