我一直在处理一个表单,我希望禁用提交按钮,除非选择了textarea和select选项。
textarea验证工作正常,问题在于选择。 问题是select从自定义drowpdown获取其值,该值将值设置为select并且我认为这是问题,因为脚本不接受它,因为select具有值。
该脚本适用于: a)首先选择一个选择选项,然后输入textarea。 b)您键入textarea,选择一个选项,然后再在textarea中键入。
启用/禁用按钮的脚本是
$(function () {
$("#result, #content-text-ta").bind("keyup change",
function () {
if ($("#content-text-ta").val() != "" && $("#result").val() != "")
$(this).closest("form").find(":submit").removeAttr("disabled").removeClass('disabled').addClass('enabled');
else
$(this).closest("form").find(":submit").attr("disabled", "disabled").removeClass('enabled').addClass('disabled');
});
});
textarea和dropdown将值设置为select(id =“catselect”)
<textarea title="Post Text" name="content-text-ta" id="content-text-ta"></textarea>
<dl id="sample" class="dropdown">
<dt><a href="#" ><span class="cat" tabindex="1">Elige categoria</span></a></dt>
<dd style="z-index: 1;">
<ul>
<li><a href="#">Citas Famosas<span class="value">1</span></a></li>
<li><a href="#">Frases Bonitas<span class="value">2</span></a></li>
</ul>
</dd>
</dl>
<fieldset">
<select name='categories' id='catselect' class='tdomf_categories' size='1'>
<option id="result"></option>
</select>
</fieldset>
答案 0 :(得分:0)
使用以下代码:
function validateForm() {
if ($("#content-text-ta").val() !== "" && $("#catselect").val().length > 0) {
$("form").find("input[type*='submit']").removeAttr("disabled").removeClass('disabled').addClass('enabled');
} else {
$("form").find("input[type*='submit']").attr("disabled", "disabled").removeClass('enabled').addClass('disabled');
}
}
$(function() {
$("#catselect").html("");
$(".dropdown dd ul li a").click(function() {
var text = $(this).html();
$(".dropdown dt a span").html(text);
$(".dropdown dd ul").hide();
$("#catselect").val($("#sample").find("dt a span.value").html());
validateForm();
});
$("#catselect").append($("<option/>", {
value: "",
text: $(this).find('span').first().contents().filter(function() {
return this.nodeType == 3;
}).text()
}));
$(".dropdown dd ul li").each(function() {
$("#catselect").append($("<option/>", {
value: $(this).find(".value").text(),
text: $(this).find('a').first().contents().filter(function() {
return this.nodeType == 3;
}).text()
}));
$("#catselect, #content-text-ta").bind("keyup change click", validateForm);
});