web-dev-qa-db-ja.com

javascriptを介して入力隠しフィールドの値を設定する方法は?

私はresetyear関数を呼び出して、その呼び出しもしようとしていますが、フローはalert( "over")で停止し、resetmasterに制御を移しません。何か提案してください。

    String flag = "";
    flag = (String) session.getAttribute("flag");
    System.out.println("flag = " + flag);
    if (flag == null) {
        flag = "";
    }
    if (flag.equals("yes")) {
%>   
<script>

   alert(1);
  // resetyear();
    dontreset();
    //document.getElementById("checkyear").value = "1";
    //alert(document.getElementById("checkyear").value);

</script>
<%} else if(flag.equals("no"))
    {%>
<script>
    alert(2);
    //document.getElementById("checkyear").value = "2";
    //alert(document.getElementById("checkyear").value);
    resetyear();
</script>
<%}else{}%>


function resetyear(){

if(confirm("DO YOU WANT TO RESET THE YEAR?"))
{
    alert("hello");
    //document.forms['indexform'].action = "resetmaster";
    //alert(document.forms['indexform'].action);
    //document.forms['indexform'].submit();  
    alert("over");
    form.action = "resetmaster";
    form.submit();
    alert(1);
}
33
Divyang

私にとってはうまくいきます:

document.getElementById("checkyear").value = "1";
alert(document.getElementById("checkyear").value);

http://jsfiddle.net/zKNqg/

たぶんあなたのJSは実行されず、すべての周りにfunction(){}を追加する必要があります。

57
almo

要素が存在した後にスクリプトを実行する必要があります。 <input type="hidden" name="checkyear" id="checkyear" value="">を先頭に移動します。

6
Matt H

Google Chromeでは正常に動作するようです。どのブラウザを使用していますか?ここで証明 http://jsfiddle.net/CN8XL/

とにかく、document.FormName.checkyear.valueを介して入力値パラメーターにアクセスすることもできます。以下に示すように、適切なname属性を使用して、<form>タグで入力をラップする必要があります。

<form name="FormName">
    <input type="hidden" name="checkyear" id="checkyear" value="">
</form>

jQueryライブラリの使用を検討しましたか? .val()関数のドキュメント です。

4
andreacanton

最初に試すこと-アラートを含むコードが実際にレンダリングされるかどうかを判断します。あなたが投稿したものにサーバーの「if」コードがあるので、javascriptをレンダリングする条件が満たされていない可能性があります。そのため、作業しているページで右クリック->ソースを表示します。そこでjsコードを見つけてください。ページでコードを見つけた場合はお知らせください。

1
Alex Buyny

非表示入力の値を設定するためのコードは正しいです。 です。スクリプトの実行を許可していないifステートメントの条件があるかもしれません。

1
Alex