2013-04-20 51 views
-1

我有两种形式紧挨着对方。复选框的值是[对象HTMLInputElement]

这里这个权利是形成一个

<form> 
    <input type="radio" id="genderOne" name="genderOne" value="Mann"><label for="genderOne">Maennlich</label> 
    <input type="radio" id="genderTwo" name="genderOne" value="Frau"><label for="genderTwo">Weiblich</label><br><br> 
    <input type="checkbox" id="ageCheck" id="ageCheck" name="ageCheck"><label for="ageCheck">Bist du ueber 18?</label> 
</form> 

表2是根本一致,区别在于复选框的ID是genderThree和genderFour和名称是genderTwo。该复选框还有另一个名字“ageCheckTwo”。

现在我想,如果一切都正确填写开拓php.site与用户键入的参数。

一切正常,除了第二种形式,但只有性别。

这对于部分

if(document.getElementById('genderOne').checked || document.getElementById('genderTwo').checked) 
     { 
      if(document.getElementById('genderOne').checked) 
      { 
       var genderOne = $('#genderOne').val(); 
       urlString += "&genderOne=" + genderOne; 
      } 
      if(document.getElementById('genderTwo').checked) 
      { 
       var genderTwo = $('#genderTwo').val(); 
       urlString += "&genderOne=" + genderTwo; 
      } 
     } 
     if(document.getElementById('genderThree').checked || document.getElementById('genderFour').checked) 
     { 
      if(document.getElementById('genderThree').checked) 
      { 
       var genderOne = $('#genderThree').val(); 
       urlString += "&genderTwo=" + genderThree; 
      } 
      if(document.getElementById('genderFour').checked) 
      { 
       var genderTwo = $('#genderFour').val(); 
       urlString += "&genderTwo=" + genderFour; 
      } 
     } 

而只是要确定JavaScript的代码,这是第二种形式

<form> 
        <input type="radio" id="genderThree" name="genderTwo" value="Mann"><label for="genderThree">Maennlich</label> 
        <input type="radio" id="genderFour" name="genderTwo" value="Frau"><label for="genderFour">Weiblich</label><br><br> 
        <input type="checkbox" id="ageCheckTwo" id="ageCheckTwo" name="ageCheckTwo"><label for="ageCheckTwo">Ist er/sie ueber 18?</label> 
        </form> 

但是,网址是现在,当我检查所有参数像这样:

http://localhost/mojoGerman/questions.php?nameOne=fdgh&nameTwo=hj&genderOne=Mann&genderTwo=[object HTMLInputElement] 

虽然它应该显示最后第二个人的性别。我究竟做错了什么?

+3

如果你使用jQuery,你为什么不使用它...? – gdoron 2013-04-20 21:40:59

+0

我是jquery的新手,所以我试图去小步骤。我在我的复选框上使用它,但尚未在单选按钮上使用它。 – devShuba 2013-04-20 21:46:18

回答

2
var genderOne = $('#genderThree').val(); // get value in genderThree here 
urlString += "&genderTwo=" + genderThree; 

试试这个 -

if(document.getElementById('genderThree').checked) { 
     var genderThree = $('#genderThree').val(); 
     urlString += "&genderTwo=" + genderThree; 
} 
if(document.getElementById('genderFour').checked) { 
     var genderFour = $('#genderFour').val(); 
     urlString += "&genderTwo=" + genderFour; 
} 
3

简单的印刷错误的位置:

 if(document.getElementById('genderThree').checked) 
     { 
      var genderThree = $('#genderThree').val(); 
      urlString += "&genderThree=" + genderThree; 
     } 
     if(document.getElementById('genderFour').checked) 
     { 
      var genderFour = $('#genderFour').val(); 
      urlString += "&genderFour=" + genderFour; 
     } 

这就是为什么剪切和粘贴是坏主意。使自己的一个简单的功能:

function addIfChecked(name) { 
    var val = $('#' + name).val(); 
    return val ? "&" + name + "=" + encodeURIComponent(val) : ''; 
} 

urlString += addIfChecked("genderOne") + 
    addIfChecked("genderTwo") + 
    addIfChecked("genderThree") + 
    addIfChecked("genderFour"); 

或类似的东西。更好的是,给复选框一个类,以便您可以通过选择器找到它们并通过jQuery对它们进行迭代。

+1

+1表示助手功能的建议。 – 2013-04-20 21:46:14

+0

我复制粘贴你的解决方案,但它仍然说与 '[object HTMLInputElement]' – devShuba 2013-04-20 21:57:28

0

的问题是使用了错误的变量名称为genderThreegenderFour

但是你可以简化整个事情

$('input[type="radio"][name^="gender"]:checked').each(function(){ 
    urlString += '&' + this.name + '=' + this.value; 
}); 
0

我有没有完全理解你想做什么,但看到你的代码,我认为它可以通过使用不同的做法

<form> 
    <input type="radio" id="genderOne" name="genderOne[]" value="Mann"><label for="genderOne">Maennlich</label> 
    <input type="radio" id="genderTwo" name="genderOne[]" value="Frau"><label for="genderTwo">Weiblich</label><br><br> 
    <input type="checkbox" id="ageCheck" id="ageCheck" name="ageCheck"><label for="ageCheck">Bist du ueber 18?</label> 
</form> 

如果你想对你的查询字符串genderOne相同的密钥,你可以明确地声明您的姓名作为名称属性阵列进行优化。你的PHP脚本,你可以使用GET方法来获得这些值

//php 
echo $_GET['genderOne'][0];//returns first checked gender value 
echo $_GET['genderOne'][1];//returns 2nd checked gender value 

你甚至不需要这个的JavaScript,如果我明白你想达到什么得到这个值。