2013-07-02 3 views
0

У меня есть некоторый jQuery внутри текстового поля, которое мне нужно запустить, но я изо всех сил пытаюсь добиться чего-то.Получить функцию из поля ввода

Я думаю, что лучший способ объяснить это проставить код:

<input type="hidden" id="win-body-tst" value="$("#a").append($("#b"));"> 

<script> function NNNfoo(){ 
    var funcvar = document.getElementById('win-body-tst').value; 
    funcvar 
}</script> 

Я зову NNNfoo() успешно, но Append не действие.

+0

Почему вы пытаетесь добавить элемент к другому элементу внутри 'value' еще одного элемента? Кроме того, JavaScript внутри атрибута 'value' не выполняется, все, что вам даст, это строка. Кроме того, вы разделяете строки * внутри * с атрибутом '' ', но внешняя строка * также * ограничена символами' '', поэтому строка открывается и закрывается и образует недействительный HTML. –

+0

Почему вы включаете код Javascript как скрытый элемент в своей форме? Это очень плохая идея. Если вы знаете, какой код выполнить, просто поместите его в свой скрипт. Если есть альтернативы, введите их в свой скрипт и используйте значение скрытого поля для выбора между ними. –

ответ

1

Вы можете сделать это с

function NNNfoo(){ 
    var functionBody = document.getElementById('win-body-tst').value; 
    var func = new Function(functionBody); 
    func(); 
} 

Но почему вы хотите, чтобы выполнить произвольный код с input элементов?

+1

Это довольно длинный способ сделать «eval». – Quentin

+0

Я думаю .. Я только что полностью стерла 'eval' из памяти ... :) хотя они практически одинаковы ... (* помимо проблем с областью *) –

+0

Спасибо. Я использовал этот код с глобальной функцией для замены ввода в конце. Спасибо за вашу помощь. –

2

eval будет запускать JS-код, который выражается в виде строки (но я бы сделал шаг назад и попытался решить любую проблему, у вас есть другой способ, обычно не рекомендуется просить пользователей вводить JS) ,

eval(funcvar); 

(Вам также нужно конвертировать " как данные &quot; так, что они не действуют в качестве значений атрибутов разделителей).