2014-01-18 47 views
0

我有一个表格,我有一个表格,每个表格有三个单选按钮,我想获得radioButton的值并将其存储在一个数组中。获取警报从此功能开关外壳内不起作用:Javascript单选按钮检查不工作使用列

var registerEventToRadio = function registerEventToRadio(formName, radioName, radio) { 
//alert('aaaa'); works uncommenting this causes 9 alerts... 
var mandyEvent = function mandyEvent(event) { 
    switch (formName) { 
     case 'rowform_chandelier': 
      mandatoryArr[0] = 1; 
      alert(1); //does not work 
      break; 
     case 'rowform_fireplace': 
      mandatoryArr[1] = 1; 
      alert(1); //does not work 
      break; 
     case 'rowform_rooflights': 
      mandatoryArr[2] = 1; 
      alert(1); //does not work 
      break; 
    } 
}; 

var viEvent = function viEvent(event) { 
    switch (formName) { 
     case 'rowform_chandelier': 
      visibleArr[0] = 1; 
      alert(1); //does not work 
      break; 
     case 'rowform_fireplace': 
      visibleArr[1] = 1; 
      alert(1); //does not work 
      break; 
     case 'rowform_rooflights': 
      visibleArr[2] = 1; 
      alert(1); //does not work 
      break; 
    } 
}; 

var renoEvent = function renEvent(event) { 
    switch (formName) { 
     case 'rowform_chandelier': 
      renameArr[0] = 1; 
      alert(1); //does not work 
      break; 
     case 'rowform_fireplace': 
      renameArr[1] = 1; 
      alert(1); //does not work 
      break; 
     case 'rowform_rooflights': 
      renameArr[2] = 1; 
      alert(1); //does not work 
      break; 
    } 
}; 
var i = 0; 
for (i = 0; i < radio.length; i++) { 
    if (radioName === 'mandatory') radio[i].onclick = mandyEvent; 
    if (radioName === 'visible') radio[i].onclick = viEvent; 
    if (radioName === 'rename') radio[i].onclick = renoEvent; 
} 

};

调用该函数以这种方式:

var reno = getRadioButtonArray(formName, 'rename'); 
registerEventToRadio(formName, 'mandatory', mandy); 
registerEventToRadio(formName, 'visible', vi); 
registerEventToRadio(formName, 'rename', reno); 

This是一个的jsfiddle它由那里使用的所有代码。

回答

1

您的getRadioButtonArray返回一个单选元素,而不是一个数组,因此您的代码不会执行任何操作,因为您正试图遍历非数组。在for循环更改为这将让事件来运行:

if (radioName === 'mandatory') radio.onclick = mandyEvent; 
if (radioName === 'visible') radio.onclick = viEvent; 
if (radioName === 'rename') radio.onclick = renoEvent; 

http://jsfiddle.net/2wMCZ/15/

仅供参考 - 直接放置一个<form>一个<tr>里面是无效的HTML。

+0

我可以在表单中放置一个tr吗? – vamsiampolu

+0

不,tr'只能放在'table','thead','tbody'或'tfoot'里面。我建议,不要依赖不做任何事情的表单,而是通过ID来识别相关项目。另一方面,即使使用无效的HTML,也可以使您的功能正常工作。 – JLRishe

+0

在'switch-case'语句中使用'this.value'而不是1,他们会得到单选按钮的值吗? – vamsiampolu