#javascript #forms
#javascript #формы
Вопрос:
Я нахожусь на последней стадии выполнения задания по изменению системы, и мне нужно добавить флажок в стиле «iagree». Система уже не будет отправлять форму, если поля пусты, однако мне нужно, чтобы она не отправляла, т. е. всплывающее предупреждение. когда флажок «Я согласен» или переключатель не выбран. Я перепробовал миллион вещей, поэтому, если кто-нибудь сможет разобраться в этом, вы будете моим богом.
Ниже приведен мой javascript, который проверяет пустые поля и т.д. И отображает предупреждение. Мне нужно добавить к нему переключатель проверки с именем «согласен».
<div class="internal_booking_form">
<script type="text/JavaScript">
<!--
Функция, расположенная непосредственно под кодом, вычисляет значение ряда флажков и переключателей, которые у меня уже есть. Я не уверен, имеет ли значение, что у меня уже есть некоторые, но я подумал, что добавлю примечание.
$(document).ready(function() {
function recalculate() {
var sum = 0;
var base = 0;
$("input[type=checkbox]:checked").each(function() {
sum = parseInt($(this).attr("rel"));
});
sum = parseInt($(":radio[name='duration']:checked").attr("rel"), 10); // or some attribute that has the price
$("#output").html(sum);
}
$("input[type=checkbox], :radio[name='duration']").change(function() {
recalculate();
});
});
Это остальная часть кода, где, я полагаю, было бы лучше разместить функцию checkcheckbox
function newPopup(url) {
popupWindow = window.open(
url,'popUpWindow','height=700,width=800,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
}
function checkForm() {
var err=0;
var msg2="";
<?php
$reqFields=array(
"name",
"phone",
"email",
"comments",
"suburb",
"postcode",
"captcha"
);
foreach ($reqFields as $v) { ?>
if (document.getElementById('<?php echo $v?>').value==0 || document.getElementById('<?php echo $v?>').value=="00") {
if (err==0) {
document.getElementById('<?php echo $v?>').focus();
}
document.getElementById('<?php echo $v?>').style.backgroundColor='#ffa5a5';
err=1;
}<?php
}
?>
var reg1 = /(@.*@)|(..)|(@.)|(.@)|(^.)/; // not valid
var reg2 = /^. @([?)[a-zA-Z0-9-.] .([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/; // valid
if (document.getElementById('email').value==0 || !reg2.test(document.getElementById('email').value)) {
if (err==0) {
document.getElementById('email').focus();
}
document.getElementById('email').style.backgroundColor='#ffa5a5';
err=1;
}
if (err==0) {
return true;
} else {
alert("Please complete all highlited fields to continue.");
return false;
}
}
function checkFieldBack(fieldObj) {
if (fieldObj.value!=0) {
fieldObj.style.backgroundColor='#EAEAEA';
}
}
function checkNumeric(value){
var anum=/(^d $)|(^d .d $)/
if (anum.test(value))
return true;
return false;
}
function noAlpha(obj){
reg = /[^0-9.,]/g;
obj.value = obj.value.replace(reg,"");
}
//-->
</script>
<form name="ff1" enctype="multipart/form-data" method="post" action="booking.event.processing.php" onsubmit="return checkForm();">
Ответ №1:
Я предполагаю, что ваш флажок «iagree» имеет идентификатор iagree. Если вы вставляете
if( !$('input#iagree').is(":checked") ) {
err = 1;
}
if (err==0) {
...
это должно сработать. Вы можете добавить дополнительное поле сообщения, если вам нужна явная информация для согласия с чем-либо.