2014-10-03 153 views
0

好吧,让我开始说这是很多代码,所以请裸露在我身边我对这一切都很新...我顶部有两个单选按钮(YES/NO)如果是,则JavaScript函数showhideform将显示​​另一个文本框(证书)。如果您选择“是”并且循环为1,则此表单处于循环状态,所有输出均可正常工作。如果是,我在循环为2时提交,它只验证证书文本框2并忘记证书文本框1.如果选择两次,我需要它验证两者。Javascript验证循环

单选按钮:

<input 
type="radio" 
value="No" 
name="abc_<cfoutput>#BAdd#</cfoutput>" 
id="noabc_<cfoutput>#BAdd#</cfoutput>" 
onchange="showhideForm_<cfoutput>#BAdd#</cfoutput>(this.value);"/> 
<label for="noabc_<cfoutput>#BAdd#</cfoutput>">No</label> 

<input 
type="radio" 
value="Yes" 
name="abc_<cfoutput>#BAdd#</cfoutput>" 
id="abc_<cfoutput>#BAdd#</cfoutput>" 
required="yes" 
onchange="showhideForm_<cfoutput>#BAdd#</cfoutput>(this.value);"/> 
<label for="abc_<cfoutput>#BAdd#</cfoutput>">Yes</label> 

显示/隐藏单选按钮:

function showhideForm_<cfoutput>#BAdd#</cfoutput>(abc_<cfoutput>#BAdd#</cfoutput>) { 
    if (abc_<cfoutput>#BAdd#</cfoutput> == "Yes") { 
     document.getElementById("div1_<cfoutput>#BAdd#</cfoutput>").style.display = 'block'; 
     document.getElementById("div2_<cfoutput>#BAdd#</cfoutput>").style.display = 'none'; 
    } 
    else if (abc_<cfoutput>#BAdd#</cfoutput> == "No") { 
     document.getElementById("div2_<cfoutput>#BAdd#</cfoutput>").style.display = 'block'; 
     document.getElementById("div1_<cfoutput>#BAdd#</cfoutput>").style.display = 'none'; 
    } 
} 

通过循环验证:

function doSubmit(n) { 
     var QnoText = ['abc_<cfoutput>#BAdd#</cfoutput>']; // add IDs here for questions with optional text input 
      var ids = ''; 
      flag = true; 
      for (i=0; i<QnoText.length; i++) { 
       CkStatus = document.getElementById(QnoText[i]).checked; 
       ids = QnoText[i]+'Certificate_<cfoutput>#BAdd#</cfoutput>' + n; 
       if (CkStatus && document.getElementById(ids).value == '') { 
       alert('Please enter certificate number ' + n + '.'); 
       document.getElementById(ids).focus(); 
       flag = false; 

      } 
     } 
    return flag; 
    } 

证书文本框:

<input 
type="text" 
name="abc_<cfoutput>#BAdd#</cfoutput>Certificate_<cfoutput>#BAdd#</cfoutput>" 
validateat="onSubmit" 
validate="maxlength" 
id="abc_<cfoutput>#BAdd#</cfoutput>Certificate_<cfoutput>#BAdd#</cfoutput>" 
size="54" 
maxlength="120" 
value=""> 

提交按钮: // return doSubmit(1);

+0

您似乎寻找的节点ID包括标签;那是对的吗? – 2014-10-03 17:20:45

+0

@David,你真的可以给你的问题一些背景吗?你用这段代码试着做什么?使用证书背后的故事是什么? – kums 2014-10-03 17:22:33

+0

它看起来像n是一个参数,并没有改变,所以循环运行两次,它会检查ID的所有n它赢了; t去1 – mannyyysh 2014-10-03 17:28:57

回答

0

经过几天的工作,我终于想通了!我只想对所有帮助过的人表示感谢,这是任何感兴趣的人的代码!

<script type="text/javascript"> 
function doSubmit() { 
    var count =<cfoutput>#BAdd#</cfoutput>; 
    flag = true; 
    for (i=1; i<=count; i++){ 
    var ids = 'abc_'+i +'Certificate_'+i; 
    var Radio = 'abc_'+i 
     CkStatus = document.getElementById(Radio).checked; 
      if (CkStatus && document.getElementById(ids).value == '') { 
      alert('Please enter certificate number ' +i); 
      document.getElementById(ids).focus(); 
      flag = false; 

     } 
    } 
    return flag; 
} 


</script> 
0

它看起来像n只是它正在验证的输入文本框的编号/索引。

看着你的代码,CKStatus在我看来是一个复选框。如果选中它,它将根据参数n验证证书输入文本框。

+0

为什么你的答案看起来像一个评论:P – juvian 2014-10-03 17:19:13

+0

编辑你的问题和请添加更多细节 – fngaserin 2014-10-03 17:37:19