Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не хочет пропускать пробелы (https://javascript.ru/forum/misc/36360-ne-khochet-propuskat-probely.html)

greenwar 13.03.2013 04:20

не хочет пропускать пробелы
 
доброй ночи
делаю поиск по мере набора, список для поиска находится в oper_list, в <head></head>

строка в перле, который генерит html-код и выводит на экран:
str+="<a href='#' onclick=fix_oper('"+key+"','"+oper_list[key]+"');return(false)>" +oper_list[key]+ "</a><br />"


oper_list={'opera0':'оператор 0','opera1':'оператор1','opera2':'оператор2','manag0':'яманагер','manag1':'менеджер1','test11':'админыч','Gonzo':'Гонзо Емельян Сидорович'}


вот он пропускает все, кроме тех, которые с пробелом (оператор 0 и Гонзо..)
ругается так:
SyntaxError: unterminated string literal
fix_oper('Gonzo','Гонзо
указывает на 3ю кавычку

вроде кавычки все на месте, без пробелов работает, что не так то?

Deff 13.03.2013 06:02

greenwar,
Используйте обрамление кода в BB теги тут в топике

рони 13.03.2013 09:04

greenwar,
str+="<a href='#' onclick=\"fix_oper('"+key+"','"+oper_list[key]+"');return(false)\">" +oper_list[key]+ "</a><br />"

greenwar 13.03.2013 15:25

рони,
финальный результат получается таким:
str+="<a href='#' onclick="fix_oper('"+key+"','"+oper_list[key]+"');return(false)">" +oper_list[key]+ "</a><br />"

и он конечно же ругается (missing ; before statement)

рони 13.03.2013 15:32

Цитата:

Сообщение от greenwar
'админыч',может просто кавычку забыли тут?Gonzo'

:write:

greenwar 13.03.2013 15:37

нет. поправил
всё работает без пробелов

рони 13.03.2013 16:04

greenwar,
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
  <meta charset="utf-8" />
</head>
<body>
<script type="text/javascript">
function fix_oper(a,b)
{
  alert([a,b]);
}
var oper_list={'opera0':'оператор 0','opera1':'оператор1','opera2':'оператор2','manag0':'яманагер','manag1':'менеджер1','test11':'админыч','Gonzo':'Гонзо Емельян Сидорович'}
var key = 'Gonzo';
str="<a href='#' onclick=\"fix_oper('"+key+"','"+oper_list[key]+"');return(false)\">" +oper_list[key]+ "<\/a><br \/>"
document.write(str)
</script>
</body>
</html>

greenwar 13.03.2013 17:07

не, str это часть большого кода, который в теле документа
выглядит так:
var outputs=document.getElementById('search_results');
function pickup(obj){
var str='', val, q, qr;
if(obj.value.length>1){ // поиск со второй буквы
    q=obj.value.toLocaleLowerCase();
    qr=q.substr(1);
    for(key in oper_list){ // перебор хеша
	val=oper_list[key].toLocaleLowerCase();
	if(0==q.indexOf(' ')){
	    if(0==val.indexOf(qr)){str+="<a href='#' onclick=fix_oper('" +key+ "','" +oper_list[key]+ "');return(false)>" +oper_list[key]+ "</a><br />"}
	}else{
	    if(val.indexOf(q)>-1){str+="<a href='#' onclick=fix_oper('" +key+ "','" +oper_list[key]+ "');return(false)>" +oper_list[key]+ "</a><br />"}
	}
    }
}

if(str){ // если строка появилась, т.е. есть результаты поиска
    outputs.innerHTML=str;
    outputs.style.display='block'
}else{
    outputs.innerHTML='';
    outputs.style.display='none';
}

} // pickup

// ФИКСИРОВАНИЕ ОПЕРАТОРА
function fix_oper(Ologin,Oname){

if(confirm('назначить оператора "'+Oname+'" на эту задачу?')){
    var operobj=document.getElementById('oper_search_form');
    operobj.innerHTML="<a href='/index.cgi?cabinet_"+Ologin+"' target='_blank'>"+Oname+"</a>"; // visible fix
    operobj.setAttribute('class','noedit');

    document.getElementById('fix_oper_l').value=Ologin; // hidden fix
    document.getElementById('fix_oper_n').value=Oname;

    var x = document.getElementById('task_statuses');
    x.options[0].selected = true;
}

} // fix_oper


и я уже сказал, что с \" не работает

greenwar 13.03.2013 17:10

есть у JS ещё какие-нибудь кавычки, типа как qq qw в перле?

рони 13.03.2013 17:44

greenwar,
содержание onclick надо ставить в кавычки и экранировать слешем при необходимости -- других вариантов нет.


Часовой пояс GMT +3, время: 00:15.