私はjQueryを使ってフォームの中に隠しフィールドの値を設定しようとしましたが、成功しませんでした。
これが問題を説明するサンプルコードです。入力タイプを "text"にしておけば、問題なく動作します。しかし、入力タイプを "hidden"に変更してもうまくいきません。
<html>
<head>
<script type="text/javascript" src="jquery.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("input:text#texens").val("tinkumaster");
});
});
</script>
</head>
<body>
<p>
Name:
<input type="hidden" id="texens" name="user" value="texens" />
</p>
<button>
Change value for the text field
</button>
</body>
</html>
また、入力タイプを "text"に設定してから、入力ボックスに "display:none"スタイルを使用して、次の回避策を試しました。しかし、これも失敗します! jQueryが隠れた、または見えない入力フィールドを設定するのに問題があるようです。
何か案は?実際に動作するこの問題に対する回避策はありますか?
:text
は、type値がhidden
の入力に対して失敗します。以下のものを使うほうがはるかに効率的です。
$("#texens").val("tinkumaster");
ID属性はWebページ上で一意である必要があります。これは問題が発生する可能性があるため、自分のものであることを確認してください。
http://jsbin.com/elovo/edit の例、 http://の例のコードを使用jsbin.com/elovo/2/edit
IDを渡しているために隠しフィールドの値を設定できない場合は、これが解決策です。
$("#hidden_field_id").val(id)
の代わりに$("input[id=hidden_field_id]").val(id)
を実行してください。違いが何であるかわからないが、それはうまくいきます。
最後に、私は解決策を見つけました、そしてそれは簡単なものです:
document.getElementById("texens").value = "tinkumaster";
魅力のように働きます。 jQueryがこれにフォールバックしない理由はわかりません。
私は同じ問題を抱えていました。奇妙なことにグーグルクロムとおそらく他の人(わからない)が好きではなかった
$("#thing").val(0);
input type="hidden" id="thing" name="thing" value="1" />
(変化なし)
$("#thing").val("0");
input type="hidden" id="thing" name="thing" value="1" />
(変化なし)
しかしこれは動作します!!!!
$("#thing").val("no");
input type="hidden" id="thing" name="thing" value="no" />
変更!
$("#thing").val("yes");
input type="hidden" id="thing" name="thing" value="yes" />
変更!
「文字列」でなければなりません
$('input[name=hidden_field_name]').val('newVal');
どちらも私のために働いた
$('input[id=hidden_field_id]').val('newVal');
また
$('#hidden_field_id').val('newVal');
した。
値属性サーバー側を取得していて、値が常に更新されるとは限らないため、.valは私には機能しませんでした。だから私は使用しました:
var counter = 0;
$('a.myClickableLink').click(function(event){
event.preventDefault();
counter++;
...
$('#myInput').attr('value', counter);
}
誰かに役立つことを願っています。
実際、これは継続的な問題です。 Andyはダウンロードされたソースについては正しいのですが、.val(...)と.attr( 'value'、...)は実際にはHTMLを変更していないようです。私はこれがJavaScriptの問題であり、 そうではない jqueryの問題だと思います。あなたがfirebugを使ったことがあったとしても、あなたは同じ質問をしたでしょう。変更された値を使用してフォームを送信した場合、HTMLは変更されません。変更されたフォームの印刷プレビュー([form] .html()を実行)を作成しようとして、この問題に遭遇しました。それは、すべての変更 除く 値の変更を含め、すべて問題なくコピーします。したがって、私のモーダル印刷プレビューは無用です...私の回避策は、それらが追加した値を含む隠されたフォームを '構築'するか、独自にプレビューを生成し、ユーザーが行う各修正をプレビューも修正することです。どちらも最適ではありませんが、値設定の動作によってHTMLが変更されない理由を誰かが考えていない限り(DOMではこれを前提としています)、変更する必要があります。
私は同じ問題を抱えていました、そして、私は何が間違っていたかわかりました。 HTMLを次のように定義しました。
<form action="url" method="post">
<input type="hidden" id="email" />
<form>
<script>
function onsomeevent()
{
$("#email").val("[email protected]");
}
</script>
サーバー上でフォームの値を読み取ると、常にEメールが空となっていました。頭をかいて(そして何度も検索した後)、その間違いはフォーム/入力を正しく定義していないことに気づいた。 (次に示すように)入力を修正すると、それは魅力的に働きました
<input type="hidden" id="email" name="email" />
他の人が同じ問題を抱えている場合に備えて、このスレッドに追加する。
私の場合、val()のパラメータとして文字列以外(整数)を使用していましたが、うまくいきません。トリックは同じくらい簡単です。
$("#price").val('' + price);
ここで別の問題が私の時間の一部を無駄にしたので、私は私が先端を通り過ぎると思いました。私は持っていたIDを与えた隠しフィールドを持っていました。 (struts2で使用するため)および[]
という名前の括弧とセレクタ$("#model.thefield[0]")
は私の隠しフィールドを見つけられませんでした。ピリオドと大括弧を使用しないようにIDの名前を変更すると、セレクターが機能し始めました。それで結局私は代わりにmodel_the_field_0
のidで終わりました、そしてセレクタはうまくいきました。
val()
を使ってもうまくいきませんでした。私は至る所で.attr()
を使わなければなりませんでした。また、私はさまざまな種類の入力があり、チェックボックスと選択メニューの場合にはかなり明示的でなければなりませんでした。
テキストフィールドを更新します
$('#model_name').attr('value',nameVal);
ファイル入力の横にある画像を更新する
$('#img-avatar').attr('src', avatarThumbUrl);
ブール値を更新します
if (isActive) {
$('#model_active').attr('checked',"checked");
} else {
$('#model_active').attr('checked', null) ;
}
selectを更新します(数字または文字列で)
$('#model_framerate').children().each(function(i, el){
var v = $(el).val();
if (v === String(framerateVal)) {
$(el).attr('selected','selected');
} else {
$(el).attr('selected',null);
}
}
IDを使用する:
$('input:hidden#texens').val('tinkumaster');
クラスを使う:
$('input:hidden.many_texens').val('tinkumaster');
getとsetの下の構文を使うだけです
GET
//Script
var a = $("#selectIndex").val();
ここで変数はhiddenfield(selectindex)の値を保持します
サーバー側
<asp:HiddenField ID="selectIndex" runat="server" Value="0" />
SET
var a =10;
$("#selectIndex").val(a);
Hamlを検索している場合、これは次のような隠しフィールドに値を設定する隠しフィールドの答えです
%input#forum_id.hidden
Jqueryで値を文字列に変換し、jqueryのattrプロパティを使用して追加します。これが他の言語でも機能することを願っています。
$('#forum_id').attr('val',forum_id.toString());