Устанавливание значения динамично созданного текстового поля с jQuery

Использование следующего кода

var newDiv = $(document.createElement("div"));
var newTextBox;

newTextBox = $(document.createElement("input"))
    .attr("type", "text")
    .attr("id", "textbox")
    .attr("name", "textbox");

newTextBox.val("text");
newDiv.append(newTextBox);
alert(newDiv.html());

Я получаю следующее

<input name="textbox" id="textbox" type="text">

Я получаю то же самое с

$("#textbox").val("test");

Используя

newTextBox = $("<input/>");

Не помогает также

Где мое значение?

Править: SOLTUION

Так, далее в стеке я преобразовывал DOM, который я создал к строке и так как - как жуют упомянутый - динамическое значение не становится добавленным к тегу, это не обнаруживалось.

Спасибо за справку

9
задан Mason 29 January 2010 в 02:22
поделиться

4 ответа

jQuery не будет вставлять значение в генерируемый элемент html. Оба .attr('value', 'blah') и .val() получают текущее значение того, что было введено или изменено в текстовом вводе, и позволяют увидеть это значение при просмотре ввода на странице или отправке его на сервер. Однако, Вы не увидите его при просмотре html.

Вы все еще можете манипулировать значением сколько угодно, вы просто не увидите никаких изменений в firebug, как вы это делаете с изменениями классов, стилей и т.д.

AFAIK, это то же самое без использования jQuery. То же самое происходит с:

document.getElementById('textbox').value = 'my text'; 

Атрибут value только для того, чтобы установить значение чего-то с сервера. С помощью javascript это не нужно.

Также, это зависит от типа ввода, который вы используете. Например, вы увидите, что атрибут value изменяется при скрытом вводе, но не в текстовом поле.

EDIT:

При добавлении newDiv в тело, текстовое поле и значение отображаются с помощью вашего кода. Вот тестовая страница . Вы можете увидеть как код, так и предварительный просмотр того, что произойдет. Однако, предупреждение не показывает никакого атрибута 'value' по причинам, описанным выше.

9
ответ дан 4 December 2019 в 19:33
поделиться

Хорошо, после работы с этим в течение нескольких недель, это то, чем я закончила. Это работает как очарование и избегает зависимости от издевательств, но все равно чувствует себя халтурно ко мне.

// Get the application's route collection.
UrlRoutingModule module = new UrlRoutingModule();
RouteCollection col = module.RouteCollection;

// Fake a request to the supplied URL into the routing system
string originalPath = this.HttpContext.Request.Path;
this.HttpContext.RewritePath(urlToGetControllerFor);
RouteData fakeRouteData = col.GetRouteData(this.HttpContext);

// Get an instance of the controller that would handle this route
string controllername = fakeRouteData.Values["controller"].ToString();
var ctxt = new RequestContext(this.ControllerContext.HttpContext, fakeRouteData);
IController controller = ControllerBuilder.Current.GetControllerFactory()
                          .CreateController(ctxt, controllername);

// Reset our request path.
this.HttpContext.RewritePath(originalPath.ToString());

До сих пор не было абсолютно никаких нижестоящих побочных эффектов вызовов RewritePath () . Спасибо Курту за его код, и если кто-то может придумать что-то получше, пожалуйста, не стесняйтесь размещать.

-121--2466014-

Вот вы идете:

function replace_file($path, $string, $replace)
{
    set_time_limit(0);

    if (is_file($path) === true)
    {
        $file = fopen($path, 'r');
        $temp = tempnam('./', 'tmp');

        if (is_resource($file) === true)
        {
            while (feof($file) === false)
            {
                file_put_contents($temp, str_replace($string, $replace, fgets($file)), FILE_APPEND);
            }

            fclose($file);
        }

        unlink($path);
    }

    return rename($temp, $path);
}

Называйте это так:

replace_file('/path/to/fruits.txt', 'apples', 'oranges');
-121--3527167-

С небольшим взломом вы можете сделать это..

var newDiv = $('<div/>');
var newTextBox;

newTextBox = $('<input/>')
    .attr("type", "hidden")
    .attr("id", "textbox")
    .attr("name", "textbox");

newTextBox.val("text");
newDiv.append(newTextBox);
newTextBox.each(function(){this.type='text';});
alert(newDiv.html());

1-й определить его тип как скрытый, потому что это позволит атрибут значения, а затем с помощью кода изменить его на текст..

1
ответ дан 4 December 2019 в 19:33
поделиться
var newDiv = $(document.createElement("div"));

var newTextBox = $('<input />')
    .attr("type", "text")
    .attr("id", "textbox")
    .attr("name", "textbox")
    .val("my text"); // <-- You can use here...

newTextBox.val("my text"); // <-- or here
newDiv.append(newTextBox);
alert(newDiv.html());
1
ответ дан 4 December 2019 в 19:33
поделиться
$("#element")[0].setAttribute("value","newvalue");
1
ответ дан 4 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: