在以下示例中,我使用html title
从this
表单获取id=title
。
我该怎么做,但不是使用ID,而是使用名称?
$(document).ready(function(){
$('form').live('submit', function(){
var aform = $('form[name="create_form"]');
// get the entire form
var form = $(this);
// get form title field by ID
var title = this.elements.title.value;
// get selected radio button using name instead if ID
var type = $(this).find('input:radio[name="ctype"]:checked').val() || '';
alert(title);
对于单选按钮,它是按名称获取的,但我无法弄清楚如何将该语法转换为
的正常表单字段<input name="title" id="55544_title" type="text" />
答案 0 :(得分:1)
在这一行
// get form title field by ID
var title = this.elements.title.value
你没有使用id获取它,你使用name属性获取它,所以在某种程度上你已经正确地执行了它
答案 1 :(得分:1)
为什么你不能这样做:
var title = $('input[name=title]',form).val();
而不是:
var title = this.elements.title.value
答案 2 :(得分:0)
$(this).find(":input[name='title']");
应该有效
答案 3 :(得分:0)
> // get form title field by ID
> var title = this.elements.title.value;
在监听器中,this
是表单(因为监听器附加到表单)。如果有多个名称为'title'的元素,则:
this.elements.title
将是一个集合。您正试图访问该对象的值属性。如果要引用已选中的集合中的单选按钮,则:
$(this).find('input:radio[name="ctype"]:checked')
将返回一个jQuery对象,其输入作为唯一元素,因此:
var checkedButton = $(this).find('input:radio[name="ctype"]:checked')[0];
应该做的伎俩(如果选择了一个)。或者,您可以迭代this.elements.title
返回的元素以查找所选元素:
var checkedButton, buttons = this.elements.title;
if (buttons.tagName) {
checkedButton = buttons;
} else {
for (var i=0, iLen=buttons.length; i<iLen; i++) {
if (buttons[i].checked) {
checkedButton = buttons[i];
}
}
}