Avatar billede wisemind Nybegynder
08. maj 2010 - 09:30 Der er 3 kommentarer

Jquery: Skjul valgmuligheder hvis checkbox ikke er "ticked"

Hej Eksperter!

I en jquery form, har jeg brugeren mulighed for at tilmelde sig et nyhedsbrev indenfor forskellige interesse omraader. Mulighederne skal kun vises naar brugeren ticker "Modtag nyhedsbrev".

Det jquery eksempel jeg bruger skulle egentlig allerede goere saaledes, men af en eller anden aarsag bliver valgmulighederne stadig vist, selvom man ikke har sagt ja tak til nyhedsbrev.

Kode delen der styrer det, ser saaledes ud:

    //code to hide topic selection, disable for demo
    var newsletter = $("#newsletter");
    // newsletter topics are optional, hide at first
    var inital = newsletter.is(":checked");
    var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
    var topicInputs = topics.find("input").attr("disabled", !inital);
    // show when newsletter is checked
    newsletter.click(function() {
        topics[this.checked ? "removeClass" : "addClass"]("gray");
        topicInputs.attr("disabled", !this.checked);
    });


Som forfatteren skriver, saa er "hide" funktionen disabled i test eksemplet, men jeg kan simpelthen ik finde ud af hvordan man enabler den.

Sorry my ignorance, haaber der er en som kan hjaelpe, og god weekend til alle! :D
Avatar billede Slettet bruger
08. maj 2010 - 12:12 #1
Det kunne være enormt smart, hvis man også kunne se lidt medfølgende HTML.
Måske er dette løsningen:

//code to hide topic selection, disable for demo
var newsletter = $("#newsletter");
// newsletter topics are optional, hide at first
var inital = newsletter.is(":checked");
var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
var topicInputs = topics.find("input").attr("disabled", !inital);
// show when newsletter is checked
newsletter.click(function() {
    topics[this.checked ? "show" : "hide"]();
    topicInputs.attr("disabled", !this.checked);
});


Ellers må du vise noget mere af siden.
Avatar billede wisemind Nybegynder
08. maj 2010 - 13:03 #2
Hej kimsey, mange tak for svaret!

Med dit eksempel virker det halvt efter hensigten.
Kategorierne bliver stadig vist naar man loader siden, men naar man ticker "nyhedsbrev" og saa igen unticker deb option saa forsvinder interesse kategorierne efter hensigten.

Saa det sidste maa vaere et eller andet med hide on load?

Javascriptet ser saaledes ud

<script src="lib/jquery.js" type="text/javascript"></script>
<script src="jquery.validate.js" type="text/javascript"></script>

<script type="text/javascript">
$.validator.setDefaults({
    submitHandler: function() { form.submit(); }
});

$().ready(function() {
    // validate the comment form when it is submitted
    $("#commentForm").validate();
   
    // validate signup form on keyup and submit
    $("#signupForm").validate({
        rules: {
            firstname: "required",
            lastname: "required",
            username: {
                required: true,
                minlength: 2
            },
            password: {
                required: true,
                minlength: 5
            },
            confirm_password: {
                required: true,
                minlength: 5,
                equalTo: "#password"
            },
            email: {
                required: true,
                email: true
            },
            topic: {
                required: "#newsletter:checked",
                minlength: 2
            },
            agree: "required"
        },
        messages: {
            firstname: "Please enter your firstname",
            lastname: "Please enter your lastname",
            username: {
                required: "Please enter a username",
                minlength: "Your username must consist of at least 2 characters"
            },
            password: {
                required: "Please provide a password",
                minlength: "Your password must be at least 5 characters long"
            },
            confirm_password: {
                required: "Please provide a password",
                minlength: "Your password must be at least 5 characters long",
                equalTo: "Please enter the same password as above"
            },
            email: "Please enter a valid email address",
            agree: "Please accept our policy"
        }
    });
   
    // propose username by combining first- and lastname
    $("#username").focus(function() {
        var firstname = $("#firstname").val();
        var lastname = $("#lastname").val();
        if(firstname && lastname && !this.value) {
            this.value = firstname + "." + lastname;
        }
    });
   
//code to hide topic selection, disable for demo
var newsletter = $("#newsletter");
// newsletter topics are optional, hide at first
var inital = newsletter.is(":checked");
var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
var topicInputs = topics.find("input").attr("disabled", !inital);
// show when newsletter is checked
newsletter.click(function() {
    topics[this.checked ? "show" : "hide"]();
    topicInputs.attr("disabled", !this.checked);
});
});
</script>
Avatar billede Slettet bruger
13. maj 2010 - 23:00 #3
Jeg forstår ikke helt hvad du mener, men prøv at se, om dette kan gøre det:

//code to hide topic selection, disable for demo
var newsletter = $("#newsletter");
// newsletter topics are optional, hide at first
var inital = newsletter.is(":checked");
var topics = $("#newsletter_topics")[inital ? "show" : "hide"]();
var topicInputs = topics.find("input").attr("disabled", !inital);
// show when newsletter is checked
newsletter.click(function() {
    topics[this.checked ? "show" : "hide"]();
    topicInputs.attr("disabled", !this.checked);
});


Er det ellers muligt at få et link til siden, eller hele kildekoden, inklusiv HTML?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester