【问题标题】:How do I know I insert the onChange correctly into my form?我怎么知道我将 onChange 正确插入到我的表单中?
【发布时间】:2013-01-15 17:58:38
【问题描述】:

我在 php 生成的选择中插入了一个 onChange 触发器。 但是我的最终结果没有响应以纯 html 和 javascript 格式完美运行的 onChange 函数。 如何调试它,以便我知道 onChange 函数已正确插入到我的选择标签中?

谢谢

更多信息

实际上是这样的

<p class="<?php if (get_option('jr_submit_cat_required')!=='yes') : echo 'optional'; endif; ?>"><label for="job_cat"><?php _e('Job Category', 'appthemes'); ?> <?php if (get_option('jr_submit_cat_required')=='yes') : ?><span title="required">*</span><?php endif; ?></label> <?php
        $sel = 0;
        if (isset($posted['job_term_cat']) && $posted['job_term_cat']>0) $sel = $posted['job_term_cat']; 
        global $featured_job_cat_id;
        $args = array(
            'orderby'            => 'name', 
            'exclude'            => $featured_job_cat_id,
            'order'              => 'ASC',
            'name'               => 'job_term_cat',
            'hierarchical'       => 1, 
            'echo'               => 0,
            'class'              => 'job_cat',
            'selected'           => $sel,
            'taxonomy'           => 'job_cat',
            'hide_empty'         => false
        );
        $dropdown = wp_dropdown_categories( $args );
       $dropdown = str_replace('class=\'job_cat\'id=\'job_term_cat\' >','class=\'job_cat\' onchange="changeValue(this)"><option value="">'.__('Select a category&hellip;', 'appthemes').'</option>',$dropdown);
    ?></p>
echo $dropdown;

这是瓷砖

<p><label for="job_title"><?php _e('Job title', 'appthemes'); ?> <span title="required">*</span></label> <input type="text" class="text"  id="job_title" name="job_title" ></p>

这是脚本

function changeValue(obj){ document.getElementById('job_title').value= obj[obj.selectedIndex].innerHTML;
}

脚本在页脚中的位置

<p class=""><label for="cat">Category <span title="required">*</span></label> <select name="a_cat" id="a_cat" class="cat">
<option class="level-0" value="86" selected="selected">1 a</option>
<option class="level-0" value="93">2 b</option>
<option class="level-0" value="125">3 c</option>
</select>
</p>



<div id="footer">
<script type="text/javascript">
function changeValue(obj){ document.getElementById('title').value= obj[obj.selectedIndex].innerHTML;
}
</script>
</div>

上面是生成的东西和页脚,你看有什么不对吗?

【问题讨论】:

  • 可能是区分大小写的问题。它是onchange。你能检查它是否有效。
  • @srijan HTML 属性不区分大小写,我相信这是 OP 分配的。没有一些代码很难确定。
  • 更改为小写onchange,无响应。我只是想知道如何才能找到我的 onChange 函数是否已插入...请参阅我的帖子以获取更新信息
  • 如果你想这样做,你的changeValue 函数需要在全局范围内。确保您可以从控制台调用changeValue。我也看不到你在哪里 echoing 更改的字符串 $dropdown
  • 嗨,我添加了回声,我认为它不太相关,所以我没有把它放在代码上:) 但是我怎样才能使 cangeValue 函数“在全局”范围内?我用 WordPress 做的。

标签: javascript select onchange


【解决方案1】:

在 firefox 或 chrome 中,您可以使用 console.log('rock on!') 来查看您的 onChange 事件是否被调用。

您需要在 firefox 中使用 Firebug 或在 Chrome 中使用控制台资源管理器才能看到结果

或者,您可以只使用alert('here'); 来查看您的代码是否运行。

【讨论】:

  • 嗨,感谢您提供的信息,但是...我输入了 console.log('rock on!')....除了岩石之外,什么都没发生!显示....请查看我的更新信息
  • 所以,你知道你的 onChange 事件被调用了,你也可以试试 console.log(obj[obj.selectedIndex].innerHTML) 看看它是否包含任何文本
  • 我粘贴了你的代码,显示:ReferenceError: obj is not defined....嗯,这是否意味着js本身有问题?
  • 你需要把这段代码放到changeValue函数中。并且当下拉列表更改时应该执行此代码
  • 这样吗?
猜你喜欢
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 2016-02-18
相关资源
最近更新 更多