1

わかりましたので、JQuery で条件文を探していましたが、2 つの入力ボックスの少なくとも 1 つにコンテンツがあることを確認する方法についての解決策が見つかりません。

これは私がこれまでに持っているものです

$('#send').click(function(){ // when the button is clicked the code executes
$('.error').fadeOut('fast'); // reset the error messages (hides them)

var error = false; // we will set this true if the form isn't valid

var name = $('input#namn').val(); // get the value of the input field
var message = $('textarea#meddelande').val(); // get the value of the textarea
var phone = $('input#telefon').val(); // get the value of the input field
var email_compare = /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/; // Syntax to compare against input
var email = $('input#epost').val(); // get the value of the input field

if(name == "" || name == " " || name == "namn" || name.length < 2) {
    $('input#namn').val("namn").css({ 'color': 'red' });
    error = true; // change the error state to true
}

if(phone == "" || phone == " " || phone == "telefon" || phone.length < 5) {
    $('input#telefon').val("telefon").css({ 'color': 'red' });
    error = true; // change the error state to true
}

if (email == "" || email == " " || email == "epost") { // check if the field is empty
    $('input#epost').val("epost").css({ 'color': 'red' });
    error = true;

}else if (!email_compare.test(email)) { // if it's not empty check the format against our email_compare variable
    $('input#epost').val("kontrollera epost").css({ 'color': 'red' });
    error = true;
}

if(message == "" || message == " " || message == "meddelande" || message.length < 10) {
    $('textarea#meddelande').val("meddelande").css({ 'color': 'red' });
    error = true; // change the error state to true
}

if(error == true) {
    $('#err-form').fadeIn('fast');
    return false;
}

var data_string = $('#ajax-contactform').serialize(); // Collect data from form

$.ajax({
    type: "POST",
    url: $('#ajax-contactform').attr('action'),
    data: data_string,
    timeout: 6000,
    error: function(request,error) {
        if (error == "timeout") {
            $('#err-timedout').fadeIn('fast');
        }
        else {
            $('#err-state').fadeIn('fast');
            $("#err-state").html('Ett fel uppstod: ' + error + '');
        }
    },
    success: function() {
        $('#ajax-contactform').fadeOut('fast');
        $('#success-msg').fadeIn('slow');
    }
});

return false; // stops user browser being directed to the php file

}); // エンドクリック関数

そして、その正常に動作します。ただし、電子メールまたは電話のいずれかにコンテンツがあることを確認する条件ステートメントを作成したいと思います。私は人々に両方を去らなければならないことを強制したくありませんが、少なくとも 1 つです。

したがって、電話にコンテンツ ("telefon" という単語ではなく数字のみ) がある場合、電子メールは必須ではなくなり、その逆も同様です。電子メールにコンテンツが含まれている場合でも、有効な電子メールであることを確認する必要があります。

どうすればこれを行うことができますか?私はここで少し迷っています:(

4

3 に答える 3

1
if (! ( (phone.length && phone != 'telefon') || email.length)) {
    //none of the above has input
}
于 2013-03-28T09:53:21.157 に答える
0

else if電話とメールのif条件の間に追加するだけで、存在する場合はlがチェックされず、存在するphone場合は..電話がチェックされませんemaiemail

if(phone == "" || phone == " " || phone == "telefon" || phone.length < 5) {
  $('input#telefon').val("telefon").css({ 'color': 'red' });
   error = true; // change the error state to true
} else if (email == "" || email == " " || email == "epost") { // check if the field is empty
//^^^ HERE
   $('input#epost').val("epost").css({ 'color': 'red' });
   error = true;

}else if (!email_compare.test(email)) { // if it's not empty check the format against our email_compare variable
  $('input#epost').val("kontrollera epost").css({ 'color': 'red' });
  error = true;
} 

ただし、コード全体を記述するよりも、使いやすくカスタマイズしやすいjquery 検証プラグインを確認することをお勧めします。

于 2013-03-28T09:56:59.877 に答える