я могу обновить метку, используя ajax вместо текстового поля? - PullRequest
0 голосов
/ 04 августа 2009

Я использую ajax для обновления текстового поля после выбора значения в раскрывающемся списке. Тем не менее, я обновляю / вставляю текст в него только при соблюдении определенных условий, поэтому он выглядит мусором, когда нет сообщений. Я думал, что с лейблом было бы намного лучше, но возможно ли это? Могу ли я иметь пустую метку и просто обновлять текст метки при необходимости?

Приветствие Leddy

Edit:

Я использую php, и когда выбрано раскрывающееся окно, я запрашиваю mysql db (на странице reports.php) - в зависимости от того, каков результат, решает, обновить ли я текстовое поле или нет:

function getHTTPObject(){
   if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
   else if (window.XMLHttpRequest) return new XMLHttpRequest();
   else {
      alert("Your browser does not support AJAX.");
      return null;
   }
}   

// Change the value of the outputText field
function setOutput(){
    if(httpObject.readyState == 4){
        document.getElementById('outputText').value = httpObject.responseText;
    }

}


function checkException()
{

    httpObject = getHTTPObject();
    if (httpObject != null)
    {   
        httpObject.open("GET", "reports.php?exceptions="
                        +document.getElementById('exceptionsID').value+"&date1=" + document.getElementById('date1').value, true);
        httpObject.send(null);
        httpObject.onreadystatechange = setOutput;
    }
}

var httpObject = null;

текстовое поле 'outputText' и устанавливается в функции setOutput ()

Надеюсь, это объясняет немного лучше

Приветствия

Ответы [ 4 ]

3 голосов
/ 04 августа 2009

Примерно так должно измениться текст метки.

// Change the value of the outputText field
function setOutput(){
        if(httpObject.readyState == 4){
                document.getElementById('outputText').innerHTML= httpObject.responseText;
        }

}

Я обновил свой оригинальный пост, чтобы отразить предоставленный код. Это предполагает, что вы используете теги <label>, <div> или <span>

0 голосов
/ 04 августа 2009

Самый простой способ справиться с этим без текстового поля - создать тег SPAN, присвоить ему идентификатор «outputText», а затем изменить внутренний текст SPAN следующим образом:

function setOutput() {
   if(httpObject.readyState == 4) {
       document.getElementById('outputText').innerText = httpObject.responseText;
   }
}

Внутри вашегоHTML, у вас будет метка, определенная так:

<span id="outputText">Some default text here</span>

Конечно, некоторые стили CSS в SPAN могут быть полезны, но это другой вопрос в другой раз.В зависимости от ваших требований к макету тег DIV может быть лучше, чем SPAN.

0 голосов
/ 04 августа 2009

Если вы используете ASP.NET, да, вы можете. Использование свойства Text метки.

0 голосов
/ 04 августа 2009

Измените текстовое поле на span и оставьте идентификатор таким же. Затем измените код, чтобы установить innerHTML вместо значения:

// Change the value of the outputText field
function setOutput(){
        if(httpObject.readyState == 4){
                document.getElementById('outputText').innerHTML= httpObject.responseText;
        }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...