首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onchange中的onchange不起作用

onchange中的onchange不起作用
EN

Stack Overflow用户
提问于 2014-03-07 16:38:01
回答 1查看 348关注 0票数 1

当我从数据库中创建2个下拉列表来填充它们时,第二个下拉列表是在从第一个下拉列表中选择一个值时创建的。但是,当我在第二个选项中选择一个选项时,我的ajax就被执行了。但是当我在第二个下拉列表中只有一个值时,它不会工作。即使我手动调用javascript函数。

第二个下拉列表:

代码语言:javascript
复制
<?
include ('../dbconnect.php');
$query = "CALL get_projects(".$userid.",".$q.")";

$result = mysql_query($query);
$countprojects = mysql_num_rows($result);

if ($countprojects != 0){

    echo '<select class="form-control" onchange="showContent(this.value)">'."\n";
    if ($countprojects > 1){
        echo "<option value='none' selected>Select project</option>";
    }
    while($rowprojecten = mysql_fetch_assoc($result)){
        echo '<option value='.$rowprojecten['projectID'].'>'.$rowprojecten['projectname'].'</option>';
        $lastvalue = $rowprojecten['projectID']; // see below why i did this
    }

    echo '</select>';

?>

我编写/复制的javascript函数:

代码语言:javascript
复制
function showContent(str)
{
if (str=="")
  {
  document.getElementById("project").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("project").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","./includes/ajax/getcontent.php?q="+str,true);
xmlhttp.send();
}

phpfile是从这个javascript中调用的:

代码语言:javascript
复制
<?
$q = intval($_GET['q']);

include ('../dbconnect.php');

$query = "CALL get_project(".$userid.",".$q.")";

$return = '<div id="project">';
$return .= $query;
$return .= '</div>';

echo $return;

mysql_close($con);

?>

为什么当我选择一个div 'project‘时,我看到它改变了,但当它被创建时,它却没有改变?

我尝试手动调用该函数,并将其添加到第一个php文件中。但它也不起作用。

代码语言:javascript
复制
if ($countprojects == 1){ 
  echo '<script type="text/javascript">
        showContent('.$lastvalue.')
        </script>';
}

很抱歉我的英语不好,我希望你能帮我解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-03-07 16:56:05

这是因为在第二个下拉列表中只有一个选项。如果下拉列表中只有on或零选项,则不能触发更改事件。您可以在选择更改时触发第一个Ajax调用的位置添加以下代码。并将您的第二个Ajax调用放在下面的代码中。

代码语言:javascript
复制
if ($('#selectproject').children().length == 1) {

            // make sure you have imported latest jquery. if not add this inside HTMl head  : <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
            var selectedProject = $('#selectproject').children()[0].value;
            showContent(selectedProject); // i hope this is the function you are calling when executing. if not please replace your function call here.
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22245217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档