SORU
11 HAZİRAN 2009, PERŞEMBE


Javascript ile bir form eylemi değiştirme/jquery

Beni deli ediyor bu bir sorun yaşıyorum. Facebook destek için openıd-vites değiştirmeye çalışıyorum. Form standart daha farklı bir url teslim edilmesi gerekir yani benim sağlayıcı olarak RPXNow kullanıyorum.

Örneğin. RpxNow beni böyle formumu kurulum gerektirir:

<form action="https://wikipediamaze.rpxnow.com/openid/start?token_url=...">

Bu facebook ve myspace hariç her sağlayıcı için çalışıyor. Bu formu bu gibi farklı bir url için asılacak gerektirir:

<form action="https://wikipediamaze.rpxnow.com/facebook/start?token_url=...">

ve

<form action="https://wikipediamaze.rpxnow.com/myspace/start?token_url=...">

Açık kimliği seçici formu her openıd sağlayıcıları temsil eden düğmeleri bir grup var. Yapmaya çalıştığım şey, facebook veya myspace düğmesi tıklandığında tespit ve göndermeden önce formdaki eylem değişti. Ancak işe yaramıyor. İşte benim kod.

Aynı "" istisna . desteklenmiyor çeşitli varyasyonları hepsini denedim

$("#openid_form").attr("action", form_url)
document.forms[0].action = form_url

Herhangi bir öneriniz var mı?

Güncelleme

Burada kodu hakkında daha fazla bilgi. Kısalık için bazı ommitted ettim. Tek şeyi yaptım. eklenen facebook bölümüne "providers_large" nesne (hangi başarıyla ekler logosu ve internet sitesi) ve yerine kaynağı / url tanımlama kullanıcı, ben oluşturma bir özellik olarak adlandırılan "form_url" ne demek istiyorsun ayarlamak için eylem benim form için. "Eğer Sağlayıcı resmi tıklayın" mal varlığı için kontrol ediyorum nerede görürsünüz "" ve bir WordPress kullanmak eylemi değiştirmek ve formu göndermek için kullanıyor. form_url bölüm başlığı bakarsanız Hata ayıklama modunda javascript ile bastığım zaman ancak bana söyler ivalid bir operasyon.

var providers_large = {
    google: {
        name: 'Google',
        url: 'https://www.google.com/accounts/o8/id'
    },
    facebook: {
        name: 'Facebook',
        form_url: 'http://wikipediamaze.rpxnow.com/facebook/start?token_url=http://www.wikipediamaze.com/Accounts/Logon'
    },

};
var providers_small = {
    myopenid: {
        name: 'MyOpenID',
        label: 'Enter your MyOpenID username.',
        url: 'http://{username}.myopenid.com/'
    },
    livejournal: {
        name: 'LiveJournal',
        label: 'Enter your Livejournal username.',
        url: 'http://{username}.livejournal.com/'
    },
    flickr: {
        name: 'Flickr',        
        label: 'Enter your Flickr username.',
        url: 'http://flickr.com/{username}/'
    },
    technorati: {
        name: 'Technorati',
        label: 'Enter your Technorati username.',
        url: 'http://technorati.com/people/technorati/{username}/'
    },
    wordpress: {
        name: 'Wordpress',
        label: 'Enter your Wordpress.com username.',
        url: 'http://{username}.wordpress.com/'
    },
    blogger: {
        name: 'Blogger',
        label: 'Your Blogger account',
        url: 'http://{username}.blogspot.com/'
    },
    verisign: {
        name: 'Verisign',
        label: 'Your Verisign username',
        url: 'http://{username}.pip.verisignlabs.com/'
    },
    vidoop: {
        name: 'Vidoop',
        label: 'Your Vidoop username',
        url: 'http://{username}.myvidoop.com/'
    },
    verisign: {
        name: 'Verisign',
        label: 'Your Verisign username',
        url: 'http://{username}.pip.verisignlabs.com/'
    },
    claimid: {
        name: 'ClaimID',
        label: 'Your ClaimID username',
        url: 'http://claimid.com/{username}'
    }
};
var providers = $.extend({}, providers_large, providers_small);

var openid = {

        cookie_expires: 6*30,   // 6 months.
        cookie_name: 'openid_provider',
        cookie_path: '/',

        img_path: 'images/',

        input_id: null,
        provider_url: null,

    init: function(input_id) {

        var openid_btns = $('#openid_btns');

        this.input_id = input_id;

        $('#openid_choice').show();
        $('#openid_input_area').empty();

        // add box for each provider
        for (id in providers_large) {

                openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif'));
        }
        if (providers_small) {
                openid_btns.append('<br/>');

                for (id in providers_small) {

                        openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico'));
                }
        }

        $('#openid_form').submit(this.submit);

        var box_id = this.readCookie();
        if (box_id) {
                this.signin(box_id, true);
        }  
    },
    getBoxHTML: function(provider, box_size, image_ext) {

        var box_id = provider["name"].toLowerCase();
        return '<a title="' provider["name"] '" href="javascript: openid.signin(\''  box_id  '\');"'  
                        ' style="background: #FFF url('   this.img_path   box_id   image_ext ') no-repeat center center" '   
                        'class="'   box_id   ' openid_'   box_size   '_btn"></a>';    

    },
    /* Provider image click */
    signin: function(box_id, onload) {

        var provider = providers[box_id];
                if (! provider) {
                        return;
                }

                this.highlight(box_id);
                this.setCookie(box_id);

                // prompt user for input?
                if (provider['label']) {

                        this.useInputBox(provider);
                        this.provider_url = provider['url'];

                } 
                else if(provider['form_url']) {

                        $('#openid_form').attr("action", provider['form_url']);
                        $('#openid_form').submit();
                }
                else {

                        this.setOpenIdUrl(provider['url']);
                        if (! onload) {
                                $('#openid_form').submit();
                        }       
                }
    },
    /* Sign-in button click */
    submit: function() {

        var url = openid.provider_url; 
        if (url) {
                url = url.replace('{username}', $('#openid_username').val());
                openid.setOpenIdUrl(url);
        }
        return true;
    },
    setOpenIdUrl: function (url) {

        var hidden = $('#' this.input_id);
        if (hidden.length > 0) {
                hidden.value = url;
        } else {
                $('#openid_form').append('<input type="hidden" id="'   this.input_id   '" name="'   this.input_id   '" value="' url '"/>');
        }
    },
    highlight: function (box_id) {

        // remove previous highlight.
        var highlight = $('#openid_highlight');
        if (highlight) {
                highlight.replaceWith($('#openid_highlight a')[0]);
        }
        // add new highlight.
        $('.' box_id).wrap('<div id="openid_highlight"></div>');
    },
    setCookie: function (value) {

                var date = new Date();
                date.setTime(date.getTime() (this.cookie_expires*24*60*60*1000));
                var expires = "; expires=" date.toGMTString();

                document.cookie = this.cookie_name "=" value expires "; path="   this.cookie_path;
    },
    readCookie: function () {
                var nameEQ = this.cookie_name   "=";
                var ca = document.cookie.split(';');
                for(var i=0;i < ca.length;i  ) {
                        var c = ca[i];
                        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                }
                return null;
    },
    useInputBox: function (provider) {

                var input_area = $('#openid_input_area');

                var html = '';
                var id = 'openid_username';
                var value = '';
                var label = provider['label'];
                var style = '';

                if (label) {
                        html = '<p>'   label   '</p>';
                }
                if (provider['name'] == 'OpenID') {
                        id = this.input_id;
                        value = 'http://';
                        style = 'background:#FFF url(' this.img_path 'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;';
                }
                html  = '<input id="' id '" type="text" style="' style '" name="' id '" value="' value '" />'   
                                        '<input id="openid_submit" type="submit" value="Sign-In"/>';

                input_area.empty();
                input_area.append(html);

                $('#' id).focus();
    }
};

CEVAP
5 EKİM 2010, Salı


bir WordPress kullanmak eğer herhangi bir form elemanları adlı kafası karışırsa "eylem". DOM öznitelik yöntemleri kullanarak bu sorunu almak ya da sadece form elemanları adında zorunda önleyebilirsiniz "eylem".

<form action="foo">
  <button name="action" value="bar">Go</button>
</form>

<script type="text/javascript">
  $('form').attr('action', 'baz'); //this fails silently
  $('form').get(0).setAttribute('action', 'baz'); //this works
</script>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • Kim Barbin

    Kim Barbin

    3 Mayıs 2012
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007