覆盖数据确认值

时间:2012-01-04 21:04:51

标签: javascript jquery

我想根据用户在表单上的选择来更改按钮(提交)上的data-confirm属性的值。我将以下内容放在下拉列表的更改功能中:

...
    if($("#"+select_name).val() == "abc")
     {
         $(".variable_button").attr("data-confirm","abc is good choice!");

     } else
     {
         $(".variable_button").attr("data-confirm","abc would have been great but this is fine too...");
     }
...

我面临的问题是,一旦分配了非空字符串,显然无法更改数据确认。我把它设置为服务器代码中的“”。并且,当用户首次在下拉列表中进行选择时,它将更改为上面显示的两条消息之一。但是,如果用户再次更改选择,则数据确认消息不会更改。这是每个设计还是我错过了什么?

2 个答案:

答案 0 :(得分:3)

请勿使用.attr(),请使用.data()

var newData = ($("#"+select_name).val() == "abc")
    ? "abc is good choice!"
    : "abc would have been great but this is fine too...";

$(".variable_button").data("confirm", newData);

答案 1 :(得分:0)

jQuery允许您使用data-方法更新.attr()属性,因此其他内容正在破坏。

以下是一个工作示例(JSFiddle):

var counter = 1;

$('#click').click(function() {
    button = $('#click');
    console.log(button.attr('data-confirm'));
    button.attr('data-confirm', 'this is test ' + counter);
    console.log(button.attr('data-confirm'));
    counter++;
});

你能尝试在JSFiddle中重现这个问题吗?

在重新阅读您的问题时,听起来事件处理程序在用户第二次更改选择时未触发。看看你是否可以在事件处理程序中设置一个断点,看它是否被击中。