2017-04-20 57 views
0

我讨厌当我花这么多时间在这样的基本问题上,看起来很容易在我的脑海中,但只是不工作。为什么我的单选按钮检测不到检查?

我有一个页面有两个单选按钮,关于哪一个我点击它应该把我发送到相关页面。

的DOM:

<form id="question-form4" class="list"> 
     <ion-radio id="question-checkbox1">YES</ion-radio> 
     <ion-radio id="question-checkbox2">NO</ion-radio> 
    </form> 
    <button ng-click="next()" type="submit" class="button button-assertive button-block">NEXT</button> 

控制器:

$scope.next = function(){ 

    if(document.getElementById('question-checkbox1').checked = true) { 
    //Male radio button is checked 
    $state.go('photo'); 
}else if(document.getElementById('question-checkbox2').checked = true) { 
    //Female radio button is checked 
    $state.go('prescription'); 
} 
} 

和当然,无论我选择,它总是给我的页面 “照片”。我可能做错了什么?

+2

它是'='vs'=='的问题? –

+0

'document.getElementById('question-checkbox1')。checked = true'将每个时间评估为true。 (因为@ÁlvaroGonzález说的) – tymeJV

+0

你好,它不会触发任何事情这样做。 – FrenchyNYC

回答

1

用以下替换您的条件。正如@Alvirp所说,它是= vs ==问题。

if(document.getElementById('question-checkbox1').checked == true) 

else if(document.getElementById('question-checkbox2').checked == true) 
+0

你好,它不会触发任何事情。 – FrenchyNYC

+4

从技术上说,你甚至不需要'== true'因为'checked'已经是一个布尔型 – Jan

+0

是的,它也不工作 – FrenchyNYC

1

好吧,鉴于是相同的,而不是工作的所有解决方案之后,我发现了一个“法”是比较复杂的,没有做任何真正的SENS给我,但那个作品:

1)在两个单选按钮添加ng-model

<ion-radio ng-model="value.name" value="yes" id="question-checkbox1">YES</ion-radio> 
     <ion-radio ng-model="value.name" value="no" id="question-checkbox2">NO</ion-radio> 

2)外接克的外部<p>ng-model的值:

<p id="final">{{value.name}}</p> 

3)在控制器中的<p>的值进行比较:

$scope.next = function(){ 

    if(document.getElementById('final').textContent == "yes") { 
    //Male radio button is checked 
    $state.go('photo'); 
}else if(document.getElementById('final').textContent == "no") { 
    //Female radio button is checked 
    $state.go('prescription'); 
} 
} 

此带我一小时半。希望它有助于某人。