2014-11-05 2 views
4

Я создал три переключателя. Я хочу запустить функцию OnClick, которая попросит пользователя подтвердить выбранную радиокнопку и сообщить, что это за значение проверенной радиокнопки. Также, если пользователь не подтвердит установленный переключатель, переключатель не будет выбран. Это код, который я написал, но не смог.Как подтвердить выбранный переключатель?

<input id="a1" type="radio" name="type" value="A1" onClick= "confirmation();" />A1 
<input id="a2" type="radio" name="type" value="A2" onClick="confirmation();" />A2 
<input id="a3" type="radio" name="type" value="A3" onClick="confirmation();"/>A3 

Javascript

function confirmation() { 


if (document.getElementById('a1').checked) { 
ty = document.getElementById('a1').value 
var ask= confirm("You have chosen " + ty + " as your type \n If you have chosen the right type, Click Ok! ") 

} 
if (document.getElementById('a2').checked) { 
level = document.getElementById('a2').value; 
var ask= confirm("You have chosen " + ty + " as your Examination Level \n If you have chosen the right type, Click Ok! ") 
} 
if (document.getElementById('a3').checked) { 
ty = document.getElementById('r1').value; 
var ask= confirm("You have chosen " + ty + " as your type \n If you have chosen the right type, Click Ok! ") 
} 
    if (ask==true) { 
     alert("You clicked ok"); 
    } 
    if (ask==false) { 
     alert("You clicked cancel"); 
    } 
} 

ответ

2

Я думаю, вы можете подвести его к этому:

function confirmation(obj) { 
 
    obj.checked ? confirm("You have chosen " + obj.value + " as your type \n If you have chosen the right type, Click Ok!") ? alert("You clicked ok") : obj.checked = false : ""; 
 
}
<input id="a1" type="radio" name="type" value="A1" onClick="confirmation(this);" />A1 
 
<input id="a2" type="radio" name="type" value="A2" onClick="confirmation(this);" />A2 
 
<input id="a3" type="radio" name="type" value="A3" onClick="confirmation(this);" />A3

Передача this функции. this относится к объекту DOM.

+0

Вам нужно снять флажок для отмены. – epascarello

+0

Спасибо за отзыв @epascarello. Проверьте обновленный код. –

+1

Отлично, он делает то, что я хочу, и это намного короче. Кроме того, почему вы использовали obj.value – Expent

2

Функция может быть проще. Вам не нужно проверять все кнопки, потому что вы можете передавать текущую функцию, например, onclick="confirmation(this)". Чтобы снять флажок, вы должны установить checked на false.

function confirmation(radio) { 
 

 
    var ask = confirm("You have chosen " + radio.value + " as your type \n If you have chosen the right type, Click Ok! ") 
 
    
 
    if (ask) { 
 
     alert("You clicked ok"); 
 
    } 
 
    else { 
 
     alert("You clicked cancel"); 
 
     radio.checked = false; 
 
    } 
 
}
<input id="a1" type="radio" name="type" value="A1" onclick="confirmation(this)" />A1 
 
<input id="a2" type="radio" name="type" value="A2" onclick="confirmation(this)" />A2 
 
<input id="a3" type="radio" name="type" value="A3" onclick="confirmation(this)" />A3

+0

Единственная проблема с этим кодом является то, что вы стрелять ваш подтверждени окно, даже если они снимите флажок. Сначала вы хотите убедиться, что он проверен. –

+0

@Stan, как вы можете снять радио? – epascarello

+0

@Stan Не совсем. Проверка на проверку является избыточной, потому что, когда срабатывает клик, мы точно знаем, что эта кнопка отмечена. Мы не можем снять его. – dfsq

1

Вы должны проходным радиокнопок, чтобы очистить их при отмене выбора. Кроме того, были некоторые небольшие ошибки синтаксиса в коде, которые исправленные ниже:

var ty; 
function confirmation() { 
    if (document.getElementById('a1').checked) { 
     ty = document.getElementById('a1').value 
     var ask = confirm("You have chosen " + ty + " as your type \n If you have chosen the right type, Click Ok! ") 
    } 
    if (document.getElementById('a2').checked) { 
     ty = document.getElementById('a2').value; 
     var ask = confirm("You have chosen " + ty + " as your Examination Level \n If you have chosen the right type, Click Ok! ") 
    } 
    if (document.getElementById('a3').checked) { 
     ty = document.getElementById('a3').value; 
     var ask = confirm("You have chosen " + ty + " as your type \n If you have chosen the right type, Click Ok! ") 
    } 
    if (ask == true) { 
     alert("You clicked ok"); 
    } 
    if (ask == false) { 
     var elem = document.getElementsByName('type'); 
     for(var i=0;i<elem.length;i++) elem[i].checked = false; 
     alert("You clicked cancel"); 
    } 
} 

jsFiddle example

+0

Вы могли бы хотя бы использовать еще, если бы помогли улучшить код. ;) – epascarello

+0

@epascarello - Else is waaay overrated;) – j08691

1

Вы можете использовать как так -

<input type="radio" value="1" onclick="return confirmation()" name="collections"> 
 
<input type="radio" value="2" onclick="return confirmation()" name="collections"> 
 
<input type="radio" value="3" onclick="return confirmation()" name="collections"> 
 

 

 

 
<script> 
 
function confirmation(){ 
 
\t if(confirm("Are you sure!")) 
 
\t { 
 
\t \t //do your job 
 
\t } 
 
\t else 
 
\t { 
 
\t \t return false; 
 
\t } 
 
} 
 
</script>

Смежные вопросы