JSFiddle - React, Tailwind, and code Playground

by hideki_a

HTML

<h1>誰が誰につぶやいた?</h1>
<h2>検索フォーム</h2>
<form action="#" method="get" id="searchform">
つぶやかれた人:<input type="text" id="username" value="">
<input type="submit" id="submit" value="search">
</form>
<h2>検索結果</h2>
<div id="searchresult"></div>
<h2>Tweetフォーム</h2>
<form action="#" method="get" id="tweetform">
<textarea></textarea>
<input type="submit">
</form>

CSS

body{
    line-height:1.5;
    font-size:0.75em;
}

h1{
    margin-bottom:1em;
}

h2{
    margin-bottom:0;
}

textarea{
    width:250px;
    height:4em;
    font-size:100%;
}

JavaScript

var URL_SEARCH_API = "http://search.twitter.com/search.json";
var target;

$.widget("ui.searchform", {
    _create: function() {
        var self = this;
        self.widgetEventPrefix = "searchform.";
        self.$input = $(":text", self.element);
        self.element.bind("submit", function(event) {
            event.preventDefault();
            target = self.$input.val();
            var data = {
                val: "@" + target
            };
            self._trigger("submit", event, data);
        });
    },
    reset: function() {
        this.$input.val("");
    }
});

$.widget("ui.searchresult", {
    _create: function() {
        this.widgetEventPrefix = "searchresult.";
    },
    _add: function(screenName) {
        var self = this,
            $li = $("<li>" + screenName + "</li>"),
            listRoot = $("ul", self.element);
        
        if(!listRoot.length) {
            listRoot = $("<ul />").appendTo(self.element);
        }
        listRoot.append($li);
    },
    _setEvent: function() {
        var self = this;
        self.element.delegate("li", "click", function(event) {
            event.preventDefault();
            var data = {
                screenName: this.innerHTML
            };
            self._trigger("select", event, data);
        });
    },
    update: function(keywords) {
        var self = this;
        $.ajax({
            url: URL_SEARCH_API,
            dataType: "jsonp",
            data: {
                result_type: "recent",
                rpp: 10,
                page: 1,
                q: keywords
            }
        }).then(
            function(response) {
                self.reset();
                $.each(response.results, function(index, current) {
                    self._add(current.from_user);
                });
                self._setEvent();
            },
            function() {
                alert("Twitter Error!");
            }
        );
    },
    reset: function() {
       ...