未捕获的TypeError:document.getElementById(...)。value.trigger不是函数

时间:2016-04-20 10:32:48

标签: javascript

我编写了一个功能,可以在控制台上显示所选的表单项,并在用户更改其选择时触发。

我在其中遇到错误,

options-general.php?page=my-unique-identifier:397 Uncaught TypeError: document.getElementById(...).value.trigger is not a function

这是我的代码,

function my_plugin_options() {
    if ( !current_user_can( 'manage_options' ) )  {
        wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
    }
    echo '<div class="wrap">';
    echo '      <h3>Form:</h3>
                <form>
                    Provide PDF Link:<br>
                    <input type="url" id="url" name="url" placeholder="http://">
                    <br><br>
                    Select Flipbook Theme:<br>
                    <input type="radio" id="theme" name="theme" value="bible" checked> Bible<br>
                    <input type="radio" id="theme" name="theme" value="magazine"> Magazine<br>
                    <input type="radio" id="theme" name="theme" value="magazine single"> Magazine Single<br><br>
                    <button type="button">Get Code</button><br> 
                </form>
                    <div id="code" style="background-color:green;">
                    </div>
                    <div id="preview">
                    <h3>Preview:</h3>
                    </div>
                <script>    
                    jQuery(document).ready(function($){
                        var url = document.getElementById("url").value.trigger("change");
                        var theme = document.getElementById("theme").value.trigger("change");
                        console.log(theme);
                    }); 
                </script>
        ';
    echo '</div>';
}

1 个答案:

答案 0 :(得分:2)

你的问题在这里:

var url = document.getElementById("url").value.trigger("url");

当您访问HTMLInputElement的媒体资源.value时,您将拥有StringString没有.trigger属性,您可以将其作为函数调用。

以下是对正在发生的事情的澄清:

var element = document.getElementById("url"); // some DOM node
var val = element.value;                      // a string like "hello"
val.trigger("url");                           // ERROR!

val.trigger;                                  // undefined

// Essentially you're doing this:
undefined();                                  // ERROR!

更新

看起来你正试图检测一个已更改的值并在发生这种情况时执行某些操作。尝试这样的事情(未经测试):

jQuery("#url").on("change", function() {
  var newValue = this.value;
  // do other things when value changes...
});