尝试使用jQuery Validate验证下拉列表。表单数据使用JSON生成。我可以在输入字段中添加“必需”,但似乎不可能通过下拉列表执行此操作。以下是我所拥有的,似乎不起作用。
有没有办法添加动作以确保用户选择一个选项?
JSON:
[
{
"caption": "Starting Calander Options",
"name": "overlay2",
"type": "select",
"id": "calander",
"options": {
"": "none",
"calendar13": "January 2015",
"calendar14": "February 2015",
"calendar15": "March 2015",
"calendar16": "April 2015",
"calendar17": "May 2015",
"calendar18": "June 2015",
"calendar19": "July 2015",
"calendar20": "August 2015",
"calendar21": "September 2015",
"calendar22": "October 2015",
"calendar23": "November 2015",
"calendar24": "December 2015"
}
},
]
Jquery的:
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script>
<script type="text/javascript">
var jqnew = jQuery.noConflict();
jqnew("#stringForm").validate({
messages: {
calander: {
required: "Please select an option from the list, if none are appropriate please select 'Other'",
},
}
});
</script>
HTML:
<div class="leftArea">
<form id="stringForm">
<input type="hidden" value="" name="id" id="id"/>
<input type="hidden" id="new-profile" name="newprofile" value="yes"/>
<input type="hidden" id="text-name" name="text_name" value=""/>
</form>
<?php //echo $this->getChildHtml("customization_radio") ?>
<?php echo $this->getChild("customization_radio") -> setProduct($product)->toHtml() ?>
</div>
另外作为一个注释,我在Magento框架7
答案 0 :(得分:0)
编辑:不知怎的,我错过了&#34; jQuery Validate&#34;参考原始问题。我会继续留下我的答案,作为一种验证方法,供搜索简单jQuery验证的人(或任何一种方法灵活),并找到这个问题。
您要执行的jQuery检查是使用.val()
方法对下拉列表值进行简单检查。
如果要确保用户选择了某个值,请检查以确保下拉列表的当前值不等于默认选项的值(即"": "none",
设置的值) :
if ($("#DROPDOWN_ID_VAL").val() !== "") {
// logic for when it passes validation
}
else {
// logic for when it DOES NOT pass validation
}
答案 1 :(得分:0)
你的JSON ......
"caption": "Starting Calander Options",
"name": "overlay2",
"type": "select",
"id": "calander",
"options": {
"": "none",
"calendar13": "January 2015",
....
}
你的jQuery ......
jqnew("#stringForm").validate({
messages: {
calander: {
required: "Please select an option from the list, if none are appropriate please select 'Other'",
},
}
});
这里有两个关键问题阻止required
验证工作......
验证规则只能使用.validate()
属性在name
方法中声明,而不是id
。您在calander
方法中使用.validate()
,但根据您的JSON,calander
是id
的{{1}}。在此方法中,您应该使用select
,这似乎已定义为overlay2
的{{1}}。 (FWIW,你还拼写错误&#34;日历&#34; as&#34; calander&#34;为你的name
。)
您尚未在select
内声明任何规则。规则使用id
选项声明,自定义消息使用.validate()
选项声明。您无法在rules
内声明规则,反之亦然。
否则,只要您messages
中的第一个messages
包含option
,select
规则就会按预期运行。
您还应该在DOM ready事件处理程序中包含jQuery代码,以确保在调用方法之前完全构造HTML。
工作代码:
value=""