Javascript/jquery 无法在其他文件中工作

标签 javascript jquery

我有一个ajax电子邮件订阅功能,它在一个独立的单个html文件中工作得很好,只有一个表单和一个电子邮件输入字段,但是当我尝试将它嵌入到其他网站的主页(具有其他表单元素和脚本)时,它除了“请稍候...”消息之外不起作用。

我相信这与引用有关,我对它的概念很差,你能告诉我如何修复它吗 谢谢

<script type="text/javascript">
$(document).ready(function(){

    rclear = $('#s-clear');
    rclear.hide();
    //rclear.hide();
    $('#newsletter-signup').submit(function(){
        //check the form is not currently submitting
        if($(this).data('formstatus') !== 'submitting'){
            //setup variables
            var form = $(this),
                formData = form.serialize(),
                formUrl = form.attr('action'),
                formMethod = form.attr('method'), 
                responseMsg = $('#signup-response');
            //add status data to form
            form.data('formstatus','submitting');
            //show response message - waiting
            rclear.hide();
            responseMsg.hide()
                       .addClass('response-waiting')
                       .text('Please Wait...')
                       .fadeIn(200);
            //send data to server for validation
            $.ajax({
                url: formUrl,
                type: formMethod,
                data: formData,
                success:function(data){
                    //setup variables
                    var responseData = jQuery.parseJSON(data), 
                        klass = '';
                    //response conditional
                    switch(responseData.status){
                        case 'error':
                            klass = 'response-error';
                        break;
                        case 'success':
                            klass = 'response-success';
                        break;  
                    }
                    //show reponse message
                    responseMsg.fadeOut(200,function(){
                        $(this).removeClass('response-waiting')
                               .addClass(klass)
                               .text(responseData.message)
                               .fadeIn(200,function(){
                                   //set timeout to hide response message
                                   setTimeout(function(){
                                       responseMsg.fadeOut(200,function(){
                                           $(this).removeClass(klass);
                                           form.data('formstatus','idle');
                                           rclear.show();
                                       });
                                   },3000)
                                });
                    });
                }
            });
        }
        //prevent form from submitting
        return false;
    });
});
</script>

<div style="background: #9FCBFF;width: 185px;height: 105px" >
<form id="newsletter-signup" action="?action=signup" method="post">
<div>
    <fieldset>
    <p id="signup-response"></p>
        <p id="s-clear"> </p>
       <div> <input type="text" name="email" id="signup-email" /></div>
        <div><input type="submit" id="signup-button" value="Subscribe" /></div>

    </fieldset>
    </div>
</form>
</div>

最佳答案

另一种可能是jquery冲突。如果您在主页中使用不同的 javascript 插件(以 $ 作为变量或函数名称),而这些插件未在独立页面中使用,则可能会出现 jquery 冲突。 尝试:

$.noConflict();
jQuery(document).ready(function($) {
  // Code that uses jQuery's $ can follow here.
});

关于Javascript/jquery 无法在其他文件中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34012421/

相关文章:

javascript - 只能在用户使用移动设备时启用 javascript 吗?

javascript - 正确检查javascript中的空值

javascript - 解析和搜索文本文件

javascript - 无法将更改事件绑定(bind)到 ajax 调用的文件输入

javascript - 创建自定义列表项 HTML,带间距的行

javascript - Mongo 命令根据字段长度过滤字段

javascript - 在 Symfony/Twig 中转义 tinyMCE javascript 输出

php - 动态添加表单字段行 - cakePHP

jquery - 是否可以从 Flash 电影中打开 JQuery 灯箱?

javascript - 按下特定键后如何捕获打字?