Javascript live(';单击';),当页面加载时函数(事件)仅工作一次

Javascript live(';单击';),当页面加载时函数(事件)仅工作一次,javascript,jquery,events,Javascript,Jquery,Events,我正在使用jquery对话框,其中我放置了2个文本框和1个按钮。这很好,所有内容都会呈现。在对话框中的按钮上,如果文本框为空,我会在文本框上应用验证。因此,当页面呈现时,验证第一次可以正常工作,但之后在另一个对话框上不会工作。 看看我的两个函数。 第一个用于对话框,第二个用于更新对话框中的文本框 $('.update_service_name').live('click',function(event){ var $tr = $(this).closest('tr'); var

我正在使用jquery对话框,其中我放置了2个文本框和1个按钮。这很好,所有内容都会呈现。在对话框中的按钮上,如果文本框为空,我会在文本框上应用验证。因此,当页面呈现时,验证第一次可以正常工作,但之后在另一个对话框上不会工作。 看看我的两个函数。 第一个用于对话框,第二个用于更新对话框中的文本框

$('.update_service_name').live('click',function(event){
    var $tr = $(this).closest('tr');
    var old_value        = $tr.children('td:eq(1)').text(),
        phone_service_id = $tr.children('td:eq(2)').text();
    var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
    var new_value_textbox ="<div class='learfix' id='div_new_value'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
    var update_button ="<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>" ;

    var $dialog = $('<div>',{title:'Update Service Name'}).dialog({
            autoOpen: false,
            width: 250
    });

    $('<p>').html(old_value_textbox).appendTo($dialog);
    $('<p>').html(new_value_textbox).appendTo($dialog);
    $('<p>').html(update_button).appendTo($dialog);

    $dialog.dialog('open');
    return false;
});
$('.update_service_name_btn').live('click',function(event){
    var pass = true;
    var new_service_name = $("#new_service_name").val();
    $("#error_message_div_new_value").html(' ');

    if(!new_service_name){
        $("#error_message_div_new_value").html('New Serrvice Name Please!');
        pass = false;
        return false;
    }
}); 
已更新

$('.update_service_name').live('click',function(event){
 var $tr = $(this).closest('tr');
 var old_value        = $tr.children('td:eq(1)').text(),
phone_service_id = $tr.children('td:eq(2)').text();
  var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
 var new_value_textbox ="<div class='learfix' id='div_new_value'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
 var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");

 $update_button.find('.update_service_name_btn').live('click',function(event){
   var pass = true;
  var new_service_name = $("#new_service_name").val();
  $("#error_message_div_new_value").html(' ');
  if(!new_service_name){
    $("#error_message_div_new_value").html('New Serrvice Name Please!');
    pass = false;
    return false;
  }
 });

 var $dialog = $('<div>',{title:'Update Service Name'}).dialog({
      autoOpen: false,
    width: 250
 });

 $('<p>').html(old_value_textbox).appendTo($dialog);
 $('<p>').html(new_value_textbox).appendTo($dialog);
 $('<p>').append($update_button).appendTo($dialog);

 $dialog.dialog('open');
 return false;
});
请注意
我刚刚发现整个问题都出在我的动态创建文本框中。我提醒了文本框的值,在第一次单击它时提醒正确的值,然后在每次提醒后,我的意思是在“新建”对话框中,我会得到我第一次输入的旧文本框值。有人能帮我解决这个问题吗??

Yo每次重新创建对话框时,您都必须运行验证代码。现在事件只注册一次,下次打开对话框时,将创建一个新的
更新\u服务\u名称\u btn
,但您不会再次注册事件!
例如:

...
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$update_button.find('.update_service_name_btn').live('click',function(event){
  var pass = true;
  var new_service_name = $("#new_service_name").val();
  $("#error_message_div_new_value").html(' ');
  if(!new_service_name){
    $("#error_message_div_new_value").html('New Serrvice Name Please!');
    pass = false;
    return false;
  }
});    

var $dialog = ...
...
$('<p>').append($update_button).appendTo($dialog);
...
。。。
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});    
var$dialog=。。。
...
$(“”).append($update_按钮)。appendTo($dialog);
...
完整代码:

$('.update_service_name').live('click',函数(事件){
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});
var$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});

每次重新创建对话框时,您都必须运行验证代码。现在事件只注册一次,下次打开对话框时,将创建一个新的
更新服务\u名称\u btn
,但您不会再次注册该事件!
例如:

...
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$update_button.find('.update_service_name_btn').live('click',function(event){
  var pass = true;
  var new_service_name = $("#new_service_name").val();
  $("#error_message_div_new_value").html(' ');
  if(!new_service_name){
    $("#error_message_div_new_value").html('New Serrvice Name Please!');
    pass = false;
    return false;
  }
});    

var $dialog = ...
...
$('<p>').append($update_button).appendTo($dialog);
...
。。。
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});    
var$dialog=。。。
...
$(“”).append($update_按钮)。appendTo($dialog);
...
完整代码:

$('.update_service_name').live('click',函数(事件){
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});
var$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});

就这样做吧&我相信你的问题会解决的

var $dialog=null;
$('.update_service_name').live('click',function(event){
if($dialog!=null){
$dialog.remove();
}
var $tr = $(this).closest('tr');
var old_value        = $tr.children('td:eq(1)').text(),
phone_service_id = $tr.children('td:eq(2)').text();
var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
var new_value_textbox ="<div class='clearfix'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$dialog = $('<div>',{title:'Update Service Name'}).dialog({
    autoOpen: false,
    width: 250
 });

$('<p>').html(old_value_textbox).appendTo($dialog);
$('<p>').html(new_value_textbox).appendTo($dialog);
$('<p>').append($update_button).appendTo($dialog);

  $dialog.dialog('open');
return false;
 });
var$dialog=null;
$('.update_service_name').live('click',函数(事件){
如果($dialog!=null){
$dialog.remove();
}
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});

就这样做吧&我相信你的问题会解决的

var $dialog=null;
$('.update_service_name').live('click',function(event){
if($dialog!=null){
$dialog.remove();
}
var $tr = $(this).closest('tr');
var old_value        = $tr.children('td:eq(1)').text(),
phone_service_id = $tr.children('td:eq(2)').text();
var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
var new_value_textbox ="<div class='clearfix'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$dialog = $('<div>',{title:'Update Service Name'}).dialog({
    autoOpen: false,
    width: 250
 });

$('<p>').html(old_value_textbox).appendTo($dialog);
$('<p>').html(new_value_textbox).appendTo($dialog);
$('<p>').append($update_button).appendTo($dialog);

  $dialog.dialog('open');
return false;
 });
var$dialog=null;
$('.update_service_name').live('click',函数(事件){
如果($dialog!=null){
$dialog.remove();
}
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});

控制台是否抛出任何错误?什么