Только что узнал странное поведение в IE9 и я понятия не имею

У меня есть эта функция:

function searchProfile(fieldName, term, page, count) {
    jQuery.ajax({type:'POST',
        data:'fieldName='+fieldName+'&term='+term+'&id=${id}&page='+page+'&count='+count,
        url:'${createLink(action: 'searchProfilByName')}',
        global: false,
        success:function(data,textStatus){jQuery('#'+fieldName+'_results_div').html(data);},
        error:function(XMLHttpRequest,textStatus,errorThrown){}});
};

И это называется например:

<div class="button" onclick="searchProfile('netzwerk', netzwerk_searchterm.value, 0, -1)">

Chrome FF Opera Safari превосходно "read"

netzwerk_searchterm.value

Но в IE9 или старше есть ошибка

"SCRIPT: 'netzwerk_searchterm' is undefined" 

.val() не работает во всех браузерах Кто-нибудь есть идея ниндзя, где ошибка может быть? заранее спасибо

0
john Smith 22 Янв 2013 в 13:16

4 ответа

Лучший ответ

Предположим, что netzwerk_searchterm является идентификатором поля, напишите это:

<div class="button" onclick="searchProfile('netzwerk', jQuery('#netzwerk_searchterm').val(), 0, -1)">

Как вы уже получили JQuery.

1
René Wolferink 22 Янв 2013 в 09:19

Вы должны использовать document.getElementById()

Нравится

searchProfile('netzwerk', document.getElementById('netzwerk_searchterm').value, 0, -1)
2
Raab 22 Янв 2013 в 09:21

Дело в том, что вы можете переместить часть «netzwerk_searchterm.value» из аргументов метода и поместить ее непосредственно в функцию, вот что я имею в виду:

 function searchProfile(fieldName, page, count) {
    var term = $('input#netzwerk_searchterm').val(); //NOTE this
    if(!term)
       term = '*'; //you can even customhouse the search term
    jQuery.ajax({type:'POST',
        data:'fieldName='+fieldName+'&term='+term+'&id=${id}&page='+page+'&count='+count,
        url:'${createLink(action: 'searchProfilByName')}',
        global: false,
        success:function(data,textStatus){jQuery('#'+fieldName+'_results_div').html(data);},
        error:function(XMLHttpRequest,textStatus,errorThrown){}});
};

Это более читабельно и работает в любом браузере.

1
mohas 22 Янв 2013 в 09:36

Вы определили netzwerk_searchterm как переменную?

Я бы сказал, что вы пытаетесь получить доступ к значению некоторого поля ввода, поэтому вы должны сделать:

$('input#netzwerk_searchterm').val()

Например.:

<div class="button" onclick="searchProfile('netzwerk', $('input#netzwerk_searchterm').val(), 0, -1)">
1
Jules 22 Янв 2013 в 09:20