在一个更大的项目中,我有一组radiobuttons,用于更新textarea中的文本。但有时候,我需要让用户选择是否真的想要更改文本。
我正在使用隐藏的radiobuttons,只显示标签。我已经能够呈现确认对话框,并阻止在textarea中更改文本,但我无法实际停止radiobutton检查新点击的元素。我试图保存对先前检查过的radiobutton的引用,但我怀疑它已经到了代码的后期。为了进一步说明,我做了一个JSFiddle。一旦加载了按钮文本和区域中的文本,就不应该存在不匹配。
http://jsfiddle.net/e0bxnghc/1/
那么有没有办法取消用户对radiobutton的选择?
HTML:
<nav id="selectors" class="segmented-button">
<input type="radio" name="group-1" value="car" id="radio1">
<label for="radio1" class="first">Car</label>
<input type="radio" name="group-1" value="boat" id="radio2">
<label for="radio2">Boat</label>
<input type="radio" name="group-1" value="plane" id="radio3">
<label for="radio3">Plane</label>
<input type="radio" name="group-1" value="train" id="radio4">
<label for="radio4" class="last">Train</label>
</nav>
<textarea id="output">output area</textarea>
的javascript:
$(document).ready(function(){
$('#selectors label').click(function() {
var element = $(this).prev();
var confirmed = false;
var previousSelected = $("input[name=group-1]:checked");
var r = confirm("Are you sure you want to change the text?");
if (r == true) {
$("#output").val(element.val());
} else{
previousSelected.checked = true;
}
});
});
答案 0 :(得分:3)
答案 1 :(得分:1)
只需从单选按钮单击事件返回'false'即可回滚该操作。我们不需要保存以前选择的单选按钮。浏览器为我们做了这个:
$(document).ready(function () {
$('input[name=Group]').click(function () {
var confirmation = confirm('Are you sure you want to change the default message?');
if (!confirmation) {
return false;
}
})
});