1

「0」の値が渡された場合にエラーがスローされるフォームを作成しようとしています。私は困惑しており、本当に助けが必要です。このスクリプトには 2 つの関数があります。1 つ目は機能しており、選択内容に基づいて URL を変更できます。私が問題を抱えているのは、選択 "--" AND "Choose State" を使用して、理論的にはフィールドを強調表示し、ユーザーがクリックできないようにする 2 番目のスクリプトを起動することです。これが「validateEmpty」という関数です

私は別のアプローチに対して完全にオープンです。これは、0 の value.length を渡すことがわかったチュートリアルのハッキング バージョンです。

サンプルページはこちら: http://www.brimbar.com/no_crawl/js-test-homepage.html

また

コードは以下のとおりです。

    <code>
    <div id="quoteDropdowns">
    <select id="stateType" name="stateType" onchange="dosomething()">
    <option value="select" selected="selected">Choose State</option>
    <option value="IL">Illinois</option>
    <option value="MD">Maryland</option>
    <option value="TX">Texas</option>
    <option value="VA">Virginia</option>
    <option value="--">--</option>
    <option value="other">Other</option>
    </select>
    </div>
    <div id="getAQuote"> <a id="mylink" class="myButton" href="#" onclick="validateEmpty">Get a Quote!</a> </div>
    <script type="text/javascript">
function dosomething() {
    var inputSelector = document.getElementById("stateType");
    var link = document.getElementById("mylink");


    if (inputSelector.value == "VA") {
        link.href = "http://www.test1.com";
    } 
    else if (inputSelector.value == "MD") {
        link.href = "http://www.test2.com";
    } 
    else if (inputSelector.value == "IL") {
        link.href = "http://www.test3.com";
    }
    else if (inputSelector.value == "TX") {
        link.href = "http://www.test4.com";
    }
    else if (inputSelector.value == "other") {
        link.href = "http://www.test5.com";
    }
            else if (inputSelector.value == "--") {
        stateType.value.length == 0;
        link.href = "#";  
    }


    } 

    console.log('First Function is Valid'); 

    function validateEmpty(stateType) {

    var error = value.length==0;

     if (stateType.value.length == 0) {
        stateType.style.border = 'red'; 
        error = "The required field has not been filled in.\n"
    } else {
        stateType.style.background = 'White';
    }
    return error; 

}
console.log('Second Function is Valid'); 

</script></code>
4

1 に答える 1

2

1) わかりました。では、イベント リスナーを使用する代わりにインライン JavaScript の古くて暗い方法を使用することにしました ;) が、オプションが変更されるたびにリンク要素の href を設定するのはなぜですか? 最適ではありません。リンクがクリックされたときに(オンデマンドで)リダイレクトしたいと思います。これにより、機能は 1 つだけになります。

if..else2) try to useコンストラクトを使用する代わりに、switch..case後で少し楽になります。さらに、読みやすいように見えますが、好みの問題かもしれません。

3) なぜそのようなねじれたロジックを検証に使用したいのですか? '--' の select 要素の値が既にあります。それを使用するか、デフォルトのセクションで処理することもできます switch case(jsFiddleのを参照)。これは、「状態の選択」オプションも処理します。リンクをクリックして「間違った」オプションを選択すると、リダイレクトではなく警告が表示されます。

これが私の jsFiddle の例です: example .

于 2012-12-04T22:00:27.083 に答える