私は動的に作成されたチェックボックスのリストを持っています。チェックボックスの状態が変わると機能が実行されます。ユーザーがチェックボックスをクリックするか、キーボード入力を使用してチェックボックスを変更するかに関わらず、関数は完全にfirefox 3.6で完全に実行されます。クロムまたはサファリでは、関数はキーボードを使用して正常に実行されますが、マウスのクリックでエラーが発生します。私はなぜコードがマウスのクリックとキーボードの入力と異なる動作をするのか分からない。ここチェックボックスのイベントハンドラがクロムのclickイベントでエラーをスローすると、safariはキーボードイベントでうまく動作します
は私が適切なコードであると考えているものです:
var q_id = $j('label:contains("SCORP Statewide Need ")').attr('for');
console.log(q_id); //writes out answer id a_721
Ajaxのポストは、チェックボックスのリストを作成します。
if(found == true){
output+="<div name='"+q_id+"'><input type='checkbox' name='"+q_id+"' id='"+q_id+"."+i+"' class='check' checked='checked' onChange='saveStateNeed("+q_id+")' value='"+list[i]+"'/>";
}else{
output+="<div name='"+q_id+"'><input type='checkbox' name='"+q_id+"' id='"+q_id+"."+i+"' class='check' onChange='saveStateNeed("+q_id+")' value='"+list[i]+"'/>";
}
output+=" <label name='l_"+q_id+"' for='"+q_id+"."+i+"' id='l_"+q_id+"."+i+"'>"+ list[i] +"</label></div>";
output+="<div class='clearboth'></div><br/>";
$j('##div_'+q_id).append(output);
このすべては、すべてのブラウザで完全に生成されます。 エラーはコールバックのsaveStateNeed()にあります。
function saveStateNeed(list){
console.log('in saveStateNeed');
console.log(list);// prints out an array of the checkboxes [input#a_721.0.check Non-motorized trails, input#a_721.1.check Sports a...ayfields, input#a_721.2.check Land Acq...projects, input#a_721.3.check Picnicki...cilities, input#a_721.4.check Nature s...wildlife]
// **in safari i get function()** but it still works with keyboard, fails with click
// the next assignment $me fails.
var $me = $j('input [name="'+list+'"]');
var isChecked = $me.context.activeElement.checked;
var $value = $me.context.activeElement.attributes['value'].nodeValue;
console.log($me); out puts the object selected as an expandable firebug object []
console.log($value); outputs label for object: Picnicking/day use facilities
console.log(isChecked); outputs true false
if(isChecked){
}else{
}
$j.ajax({
type: "POST",
url: });
}
これはちょうど私が同じコードが実際に実行され、[OK]をクリックしますキーボード入力、異なる結果になるだろう、なぜ誰もが知っている望んで複雑、IMのすべての種類です。 私は本当にこれがすべてあまりに複雑ではないことを願っています。 これを見ていただきありがとうございます。本当にありがとうございました。 歓声。
あなたはChrome/Safariでどのようなエラーが発生しますか? – Remi
FYI:他のブラウザでテストするときにconsole.logステートメントを削除することができます。一部ではサポートしていないものもあれば、コンソールが表示されている場合にのみサポートするものもあります。それが、私がそれが原因だと示唆するものではありません。 – Tom
heh、実際のエラーは私がchromeの開発ツールから得ています:Uncaught TypeError:未定義のプロパティ 'nodeValue'を読み取ることができません。しかし再び、私はマウスのクリックからこれを得るだけで、チェックバーを変更するためにスペースバーを押してもうまく動作します。探してくれてありがとう。 – lowgas