1

クイズに答えるラジオボタンと私のラジオボタンは

<input id="ans_ans1" name="ans" type="radio" value="ans1">

私の次のajaxリクエストは

<a href="#" onclick="Element.show('loader'); jQuery.ajax({data:'answer='+$('ans').value+'&amp;passed_question=1&amp;'+'&amp;exam_group_id=1&amp;' + '&amp;authenticity_token=' + encodeURIComponent('GGKdjhC39b1Fi5fe52Cq0VcPwpi6laphZblC/5ZOl8o='), dataType:'script', success:function(request){Element.hide('loader')}, type:'post', url:'/answers/next'}); return false;">Next</a>

私のコンソールで

$('ans').value は TypeError を返します: null のプロパティ 'value' を読み取れません

誰もがajaxリクエストでラジオボタンの値を取得するのを手伝ってくれます

4

7 に答える 7

3

jQuery と Prototype または MooTools を組み合わせて使用​​しているように見えます。(理由は下記参照。)

もしそうなら、私の最初の推奨事項はそれをやめることです. 1 つ選んで、全体に使用します。

しかし、あなたの主な問題は、存在しないid( ) を使用して要素を検索していることです。です。"ans"_ したがって、次のいずれかです。idans_ans1

$("ans_ans1").value         // Prototype / MooTools using raw `value` prop

また

$("ans_ans1").getValue()    // Prototype
$("ans_ans1").get('value'); // MooTools

また

jQuery("#ans_ans1").val()   // jQuery

ライブラリを組み合わせて使用​​していると思う理由:

  1. あなたは言った:

    $('ans').value は TypeError を返します: null のプロパティ 'value' を読み取れません

    これは jQuery では意味がありません。jQuery の$関数は常に non- を返しますnull空のセットを返す場合がありますが、non- を返しnullます。Prototype$または MooTools はnull、一致する要素がない場合に返さidれます (例ではありません)。

  2. jQuery の を呼び出すときは、 ではなくajax記号 を使用しています。これは、jQuery を使用しているため、Prototype または MooTools を共存させることができることを示唆しています(それらは を必要とするため)。jQuery$noConflict$

于 2013-10-16T08:54:41.590 に答える
2

PrototypeJSを jQuery と一緒に使用しているように見えるので-- Element.show():

プロトタイプ$()は、その引数がida ではなく aの値であることを期待していますname。そう

$('ans').value

する必要があります

$('ans_ans1').value

マークアップの と一致させます。<inputid="ans_ans1"...>


name代わりに選択したい場合$$()は、属性セレクターを使用できます。ただし、コレクションを返します。

$$('[name="ans"]')[0].value
于 2013-10-16T08:56:59.257 に答える
0

ただ使う

$('#ans_ans1')

また

$("input[id='ans_ans1']")

また

$("input[name='ans']")

値を取得するには、 このようにval()を使用します$('#ans_ans1').val();

jqueryセレクターに関するいくつかのコンテンツを勉強する必要があると思います

于 2013-10-16T08:57:59.040 に答える
0

セレクターが間違っており、値を取得する方法:

変更:

<a href="#" onclick="Element.show('loader'); jQuery.ajax({data:'answer='+$('#ans_ans1').val()+'&amp;passed_question=1&amp;'+'&amp;exam_group_id=1&amp;' + '&amp;authenticity_token=' + encodeURIComponent('GGKdjhC39b1Fi5fe52Cq0VcPwpi6laphZblC/5ZOl8o='), dataType:'script', success:function(request){Element.hide('loader')}, type:'post', url:'/answers/next'}); return false;">Next</a>
于 2013-10-16T08:50:50.740 に答える
0

試してみてください

<a href="#" onclick="Element.show('loader'); jQuery.ajax({data:'answer='+$('#ans_ans1').value+'&amp;passed_question=1&amp;'+'&amp;exam_group_id=1&amp;' + '&amp;authenticity_token=' + encodeURIComponent('GGKdjhC39b1Fi5fe52Cq0VcPwpi6laphZblC/5ZOl8o='), dataType:'script', success:function(request){Element.hide('loader')}, type:'post', url:'/answers/next'}); return false;">Next</a>
于 2013-10-16T08:48:37.780 に答える