触发Jquery后,网页按钮未启用

时间:2015-10-19 11:39:06

标签: jquery automation

情景是: 我的网页中有一个复选框和一个按钮,当我们手动检查复选框按钮是否启用时,但是当我使用jquery自动执行此过程时,选中复选框后按钮没有启用:

以下是我自动化的步骤:

  • 用户选中复选框-----正常检查
  • 用户点击按钮------按钮未启用

在我用于检查复选框的jquery下面:

$("#id").attr( "checked", "checked" )

在HTML中: 复选框:

<input id="preaccountconfirm" class="scp-input-check" type="checkbox" value="1" name="preaccountconfirm" tabindex="20">

按钮:

<button id="button-next" type="button" disabled="" class="scp-button-next scp-disabled" tabindex="1000">Next</button>

2 个答案:

答案 0 :(得分:0)

checked(以及disabled就此而言)是一个属性用.prop以编程方式检查元素 -

$("#id").prop( "checked", true)

在HTML术语中,您的代码会产生类似这样的内容 -

<input type="radio" checked />

我怀疑你期待这个 -

<input type="radio" checked="checked" />

使用$("#id").attr("checked", "checked")$("#id").attr( "checked","")会产生相同的HTML -

<input type="radio" checked />

因此在checked语句中使用.attr实际上对元素没有影响。使用$("#id").prop( "checked", false)实际上会从元素中删除属性 -

<input type="radio" />

以下是我认为是您的基本结构的工作版本(虽然我正在禁用select而不是button)。处理事件(在我的情况下为change)时,如果以编程方式执行此操作,则需要手动触发事件 -

$("#rad").change(function() {
  if ($(this).prop("checked"))
    $("#sal").prop("disabled", false);
  else
    $("#sal").prop("disabled", true);
});

$("#setChecked").click(function() {
  if($("#rad").prop("checked"))
    $("#rad").prop("checked", false);
  else
    $("#rad").prop("checked", true);
  $("#rad").trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="rad" type="checkbox">
<select id="sal" disabled>
  <option>1</option>
  <option>2</option>
</select>
<button id="setChecked">Click</button>

答案 1 :(得分:0)

哪个版本的jQuery正在使用?如果你使用1.6以上的任何东西,prop()是使用jQuery更改元素属性的正确方法。在此处的文档中了解有关它的更多信息:http://api.jquery.com/prop/

 $("#id").prop('checked', true);

http://jsfiddle.net/fatgamer85/0bhfLbdv/

如上面小提琴中所示的例子,使用.prop()作为john提到,这应该可以解决你的问题。